2010-08-31 57 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