多行正则表达式中是否有用于捕获换行符的标记?
题
之前,当我尝试使用 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
的(\r?\n){2}
这样你捕捉CRLF
对而不只是LF
字符。
其他提示
您确定要使用正则表达式解析HTML? HTML是不是经常和有太多的极端情况。
我将调查某种形式的HTML解析器(也许这一个?),然后确定您想通过返回的HTML数据结构的模式。
或者你可以看看 DOM扩展 到 PHP.它有一个功能 从字符串加载 html 或一个文件. 。然后你可以使用 php dom 方法来遍历 dom 并找到你感兴趣的数据。
不隶属于 StackOverflow