我有一堆類似HTML的遺留文檔。如在HTML中,他們看起來像HTML,但有額外的組成標籤,不是HTML的一部分在PHP中容錯HTML/XML/SGML解析
<strong>This is an example of a <pseud-template>fake tag</pseud-template></strong>
我需要解析這些文件。 PHP是唯一可用的工具。這些文檔並不接近於格式良好的XML。
我最初的想法是在PHP DOMDocument上使用loadHTML方法。但是,這些方法會扼制HTML標籤,並會拒絕解析字符串/文件。
$oDom = new DomDocument();
$oDom->loadHTML("<strong>This is an example of a <pseud-template>fake tag</pseud-template></strong>");
//gives us
DOMDocument::loadHTML() [function.loadHTML]: Tag pseud-template invalid in Entity, line: 1 occured in ....
唯一的解決辦法,我已經能夠拿出是預處理與字符串替換功能的文件,將刪除無效的標籤,並用有效的HTML標籤(也許有跨度替換它們標籤名稱的ID)。
有沒有更優雅的解決方案?一種讓DOMDocument知道其他標籤被視爲有效的方法?有沒有一個不同的,健壯的HTML解析類/對象用於PHP?
(如果不是很明顯,我不認爲正則表達式這裏有效的解決方案)
更新:在假標籤的信息是目標的一部分在這裏,所以像整齊不一個選項。另外,我在爲某些層次(如果不是全部的話)進行了格式清理,這就是爲什麼我首先查找DomDocument的loadHTML方法的原因。
道歉,我本來應該更具體,什麼我需要分析出該文件的部分是什麼在假標籤中找到。 – 2008-09-15 21:07:03
我建議HTMLTidy作爲一個預處理步驟,試圖讓你形成良好的XML,然後你可以用DomDocument解析它,並讀取整個DOM,並帶有任何好運:) – 2008-09-15 21:27:15
不會整理去掉僞造標記以及所有格式化它呢? – 2008-09-17 02:12:08