PHP Regex для удаления вложенных элементов формы, но не элементов ввода - PullRequest
1 голос
/ 31 марта 2012

Я изменяю скрипт 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 Ответ

3 голосов
/ 31 марта 2012

это было нелегко, но вот код

preg_replace('@(<form[^<>]+>)((.|[\r\n])*)(<form[^<>]+>)((.|[\r\n])*)(</form>)((.|[\r\n])*)(</form>)@','$1$2$5$8$10',$html);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...