【发布时间】:2013-04-08 02:40:18
【问题描述】:
我有一段 HTML(不是完整的 HTML 文档),其中包含以下几个实例:
</div>
some text is here
</h3>
我只想匹配“这里有一些文本”,但在使用 php 正则表达式时无法理解多行、换行符和空格。我得到的是:
preg_match('/<\/div>[\s\r\n\t]*(.*)[\s\n\r\t]*<\/h3>/', $string, $matches);
但这似乎不起作用。我也尝试过使用 DOMDocument(),但它会引发各种错误,可能是因为这不是完整的 HTML 文档。
有什么想法吗??
【问题讨论】:
-
使用 HTML 解析器。你说 DOMDocument() 是“抛出各种错误”,所以我建议你删除这个问题并发布一个带有错误的 DOMDocument() 问题的新问题,让我们修复它。与其帮助你在工作中使用错误的工具,不如帮助你使用正确的工具。
-
怎么不工作了?这对我来说似乎工作得很好。你检查
$matches[1]了吗? -
@AndyLester 我可能弄错了,但正如我在帖子中所说,这不是一个完整的 HTML 文档,它甚至还有额外的不是 HTML 的数据。如果我实际上可以在其上使用 DOMDoc,我会对查看您的示例代码感兴趣,但我已经在它上面花费了大量时间,并且认为我会走简单的路线。唉,ExplosionPills 的答案非常适合我的需求。
-
你看过 simplehtmldom 吗?我被引导相信它比 DOMDocument 更健壮。 simplehtmldom.sourceforge.net
-
我过去看过它,从来没有时间弄清楚如何使用它,但我现在想通了,它对我的整个项目来说要好得多。谢谢!
标签: php html regex html-parsing