之前,当我尝试使用 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 并找到你感兴趣的数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top