PHP Regex删除嵌套表单元素但不删除输入元素

时间:2012-03-31 15:23:11

标签: php regex forms nested-forms

我正在修改我拥有的PHP脚本,它当前正在输出嵌套表单。类似的东西:

<form name="input" action="html_form_action.asp" method="get">
<p>stuff here here, this may or may not be in a div, script, etc..</p>
<form name="input" action="html_form_action.asp" method="get">
<div>stuff here possibilly</div>
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form> 
<p>otherstuff this may or may not be in a div, script, etc..</p>
</form> 

嵌套表单是禁止的(IE讨厌它们并且基本上导致表单停止工作),所以我需要删除嵌套的表单行,而不是表单项。我需要删除嵌套的:

<form name="input" action="html_form_action.asp" method="get">

</form> 

但不是外部<form</form>或输入或提交内容。

这可能与正则表达式有关吗?

请注意,我之所以想要重新编写表单而不是找到问题的原因是因为我知道需要一些重要的重新工作才能摆脱双重形式...正则表达式解决方案现在很快。

1 个答案:

答案 0 :(得分:3)

这不容易,但这是代码

preg_replace('@(<form[^<>]+>)((.|[\r\n])*)(<form[^<>]+>)((.|[\r\n])*)(</form>)((.|[\r\n])*)(</form>)@','$1$2$5$8$10',$html);