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