0

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

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

4

2 回答 2

4

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

只需摆脱它,您就可以开始了:

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

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

于 2012-07-20T15:19:01.240 回答
3

除非您告诉它们,否则正则表达式点不匹配换行符。您需要s在正则表达式末尾添加一个修饰符,如下所示:

$pattern = '/<!--sliderStart-->(.*?)<!--sliderEnd-->/s';
于 2012-07-20T15:21:35.180 回答