preg_match_all抓住html评论

时间:2011-11-07 04:31:32

标签: php pcre preg-match-all

在标题中可以看到,这里是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-->/以及suimuim等模式修饰符的组合,它将无效,只需返回空数组。而且,我试图抓住它的完整HTML页面。

提前致谢。

1 个答案:

答案 0 :(得分:4)

[^<]表示一切不是&lt;,显然它会在&lt; p&gt;处失败。只需抓住所有内容并使用非贪婪选项:

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