我正在尝试将HTML源代码中的字符串与起始<!--sliderStart-->
和结束<!--sliderEnd-->
进行匹配
示例1:
<!--sliderStart-->
<p>blah</p>
<p>blah2</p>
<!--sliderEnd-->
示例2:
<!--sliderStart--><p>blah</p><p>blah2</p><!--sliderEnd-->
这是我的模式,但它不能有效地工作:
$pattern = "/<!--sliderStart-->[^'n]+(.*?)<!--sliderEnd-->/";
这种匹配的确切模式是什么?
为什么在正则表达式中使用[^'n]+
?这告诉regex引擎不要匹配换行符,而要匹配换行符。
只要去掉它,你就可以去了:
$pattern = "/<!--sliderStart-->(.*?)<!--sliderEnd-->/s";
更新:不要忘记末尾的s
修饰符,这样.
也会匹配换行符
谢谢@Palladium。
除非你告诉正则表达式点与换行符匹配,否则它们不会匹配。你需要在正则表达式的末尾使用s
修饰符,如下所示:
$pattern = '/<!--sliderStart-->(.*?)<!--sliderEnd-->/s';