多行正则表达式中是否存在捕获换行符号?

时间:2009-07-04 09:39:08

标签: php regex multiline pcre

在尝试使用php和preg *函数进行一些html抓取之前,我已经多次遇到过这个问题。

大部分时间我都要捕捉这样的结构:

<!-- comment -->
<tag1>lorem ipsum</tag>

<p>just more text with several html tags in it, sometimes CDATA encapsulated…</p>
<!-- /comment -->

特别是我想要这样的事情:

/<tag1>(.*?)<\/tag1>\n\n<p>(.*?)<\/p>/mi

\ n \ n 看起来不会起作用。

是否有一般的换行开关?

3 个答案:

答案 0 :(得分:3)

我认为您可以用\n\n取代(\r?\n){2},这样就可以捕获CRLF对,而不仅仅是LF字符。

答案 1 :(得分:1)

您确定要使用regexps解析HTML吗? HTML不常规,并且有太多的极端情况。

我会调查某种形式的HTML解析器(也许是this one?),然后通过返回的HTML数据结构识别您感兴趣的模式。

答案 2 :(得分:0)

或者您可以查看Dom Extension到php。它具有load html from a string or a file的功能。然后,您可以使用php dom方法遍历dom并找到您感兴趣的数据。