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


Split string between two delimiters

我正在尝试将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';