我尝试将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-->/";
这种匹配的确切模式是什么?
答案 0 :(得分:4)
为什么在正则表达式中使用[^\n]+
?这告诉正则表达式引擎不匹配您 想要匹配的换行符。
简单地摆脱它,你很高兴:
$pattern = "/<!--sliderStart-->(.*?)<!--sliderEnd-->/s";
更新:不要忘记最后的s
修饰符,以便.
也匹配换行符。
谢谢@Palladium。
答案 1 :(得分:3)
正则表达式点与新行不匹配,除非您告诉他们。在正则表达式的末尾需要s
修饰符,如下所示:
$pattern = '/<!--sliderStart-->(.*?)<!--sliderEnd-->/s';