在两个分隔符之间拆分字符串

时间:2012-07-20 15:16:47

标签: php regex

我尝试将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-->/";

这种匹配的确切模式是什么?

2 个答案:

答案 0 :(得分:4)

为什么在正则表达式中使用[^\n]+?这告诉正则表达式引擎匹配您 想要匹配的换行符。

简单地摆脱它,你很高兴:

$pattern = "/<!--sliderStart-->(.*?)<!--sliderEnd-->/s";

更新:不要忘记最后的s修饰符,以便.也匹配换行符。
谢谢@Palladium。

答案 1 :(得分:3)

正则表达式点与新行不匹配,除非您告诉他们。在正则表达式的末尾需要s修饰符,如下所示:

$pattern = '/<!--sliderStart-->(.*?)<!--sliderEnd-->/s';