2010-08-31 29 views
13

解析无效HTML然后在其上应用Tidy有更好的方法吗?以PHP解析无效HTML的最佳方法

边注意: 有些情况下,您不能提供Tidy。 正则表达式也不推荐我理解为解析html。

+2

在您没有Tidy的情况下,您应该安装它。或者你可以不使用破碎的HTML首先。 – 2010-08-31 07:17:45

+2

你是认真的吗?至少有几次我无法做到这一点最好的做法:来自客户端的无效HTML代码需要解析,共享主机没有选择安装Tidy .. – danidacar 2010-08-31 07:20:02

+0

@daniphp:死的严重。 – 2010-08-31 07:20:51

回答

6

我会尝试这样的事:http://php.net/manual/en/domdocument.loadhtml.php

在这个页面:

的函数解析包含在源字符串的HTML。与加载XML不同,HTML格式不一定要格式正确才能加载。这个函数也可以静态调用来加载和创建一个DOMDocument对象。

+0

它似乎loadHTML对象为两个或多个元素上的ID相同的值(尽管这可能是来自libxml) – HorusKol 2015-01-06 04:22:53

1

SimpleHTMLDOM已知比PHP的原生DOM功能更宽松。

+2

建议的[SimpleHtmlDom](http://simplehtmldom.sourceforge.net/)的第三方替代品实际上使用[DOM](http://php.net/manual/en /book.dom.php)而不是字符串分析:[phpQuery](http://code.google.com/p/phpquery/),[Zend_Dom](http://framework.zend.com/manual/en/ zend.dom.html),[QueryPath](http://querypath.org/)和[FluentDom](http://www.fluentdom.org)。 – Gordon 2010-08-31 07:24:54

+0

@戈登这次你太快了:)他正在寻找解析破碎的HTML。 – 2010-08-31 07:25:25

+1

当使用[libxml的HTML解析器模块](http://xmlsoft.org/html/libxml-HTMLparser.html)时,所有基于DOM的解析器都应该能够处理得很好。 – Gordon 2010-08-31 07:26:53