preg_match_all захватить html-комментарий - PullRequest
1 голос
/ 07 ноября 2011

Видно в заголовке, вот пример кода HTML:

<body>
<!--CODE_START-->
<p>I <strong>Want</strong> this</p>
<p>And this one too</p>
<!--CODE_STOP-->

<p>This sould be go to trash</p>

<!--CODE_START-->
<p>This one should be included too</p>
<!--CODE_STOP-->

Вопрос в том, что я хочу, чтобы все было внутри <!--CODE_START--> и <!--CODE_STOP-->, поэтому результат должен быть:

<p>I <strong>Want</strong> this</p>
<p>And this one too</p>

и <p>This one should be included too</p>

Я пытался использовать эти /<!--CODE_START-->([^<]*)<!--CODE_STOP-->/ и /<!--CODE_START-->(.*)<!--CODE_STOP-->/ с комбинацией модификаторов шаблона, таких как su, imu, im, это не будет работать, просто верните пустой массив А также, его полная HTML-страница, которую я пытался получить.

Заранее спасибо.

1 Ответ

4 голосов
/ 07 ноября 2011

[^<] означает все, что не является <, очевидно, что оно потерпит неудачу при <strong><</strong> p>. Просто поймайте все и используйте не жадный вариант:

preg_match_all('/<!--CODE_START-->(.*)<!--CODE_STOP-->/sU', $foo);
...