带有s模式修饰符的Preg_match_all无法正常工作

时间:2012-08-26 22:49:58

标签: php

我试图匹配<!-- and -->

之间的所有内容

我的PHP代码:

<?php
$html = <<< HTML
<!-- content
content content
content -->
<!-- dd  dsd  sdsd  s -->
<!-- dsajda2i -->
HTML;
preg_match_all('#<!-- (.*) -->#si',$html,$out,PREG_SET_ORDER);
print_r($out);
?>

但它没有正确匹配。

OBS:我可以在<!-- here any characters -->内添加任何字符。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您应该使用(.*?)而不仅仅是(.*)。否则,正则表达式引擎的默认“贪婪”行为会产生意外结果。