2010-09-15 30 views
2

我嘗試了幾種方法來找出一個html字符串的一部分是無效查找內容的HTML部分是無效的PHP

$dom->loadHTML($badHtml); 
$tidy->cleanRepair(); 
simplexml_load_string($badHtml); 

沒有明確關於什麼的HTML的部分是無效的。可能和額外的配置選項之一可以修復。有任何想法嗎 ?

我需要這個來手動修復用戶輸入的html。我不想在自動化流程上轉播。

+0

我認爲這是無用的想法。 – pltvs 2010-09-15 08:06:50

+0

可能重複的[我可以驗證從PHP腳本編程的xhtml?](http://stackoverflow.com/questions/3714819/can-i-validate-xhtml-programmtically-from-a-php-script) – Gordon 2010-09-15 08:08:22

+0

你可能會想要考慮使用W3C的源代碼。這是針對我曾經工作過的項目實施的 - http://nibbler.silktide.com/ – 2010-09-15 08:10:52

回答

3

我想嘗試將有問題的HTML加載到DOM文檔中(如您已經這樣做),然後使用simplexml來修復這些問題。您應該能夠運行快速比較來查看錯誤的位置。

error_reporting(0); 

$badHTML = '<p>Some <em><strong>badly</em> nested</stong> tags</p>'; 

$doc = new DOMDocument(); 
$doc->encoding = 'UTF-8'; 

$doc->loadHTML($badHTML); 

$goodHTML = simplexml_import_dom($doc)->asXML(); 
1

你可以比較清潔和壞的版本PHP Inline-Diff在回答中發現該stackoverflow question

+0

有沒有一個選項可以保留html標籤並顯示具有html的字符串之間的區別? – danidacar 2010-09-15 09:33:29

+0

也許嘗試使用函數'strip_tags' – jcubic 2010-09-15 14:29:36