在尝试使用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 看起来不会起作用。
是否有一般的换行开关?
答案 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并找到您感兴趣的数据。