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


PHP Regex to remove nested form elements but not input elements

我正在修改一个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> 

而不是外部CCD_ 1和CCD_。

这可能与regex有关吗?

注意,我之所以只想用正则表达式写出表单,而不是找到问题,是因为我知道需要进行一些重大的重新工作才能摆脱双重表单……正则表达式的解决方案目前很快。

这并不容易,但以下是代码

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