在PHP中解析无效的HTML的最佳方法

16

在没有Tidy可用的情况下,解析无效HTML是否有更好的方法?

附注: 在某些情况下,您可能无法使用Tidy。 我了解到对于解析HTML,也不建议使用正则表达式。


2
在没有Tidy可用的情况下,您应该安装它。或者您可以一开始就不使用损坏的HTML。 - Matti Virkkunen
3
你认真的吗?我至少有几次无法实施最佳实践:客户端提交的无效HTML代码需要进行解析,共享主机没有安装Tidy的选项... - johnlemon
可能是解析HTML的最佳方法的重复问题。 - Gordon
2个回答

7
我建议您尝试使用以下代码:http://php.net/manual/en/domdocument.loadhtml.php 从该页面可以得知: 该函数解析字符串源中包含的HTML。与加载XML不同,HTML不必符合规范也可加载。此函数还可静态调用以加载和创建DOMDocument对象。

似乎loadHTML对象在两个或更多元素上具有相同的ID值(尽管这可能是来自libxml)。 - HorusKol

1

2
建议使用第三方替代方案,而非使用字符串解析的SimpleHtmlDom,这些替代方案实际上使用DOMphpQueryZend_DomQueryPathFluentDom - Gordon
@Gordon 这次你太快了 :) 他正在寻找解析损坏的HTML。 - Pekka
1
所有基于DOM的解析器在使用libxml的HTML解析器模块时应该能够很好地处理它。 - Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接