2016-12-01 51 views
2

當前,當我使用DOMDocument對象並調用saveHTML()時,它會自動添加一些我不想要的html標記。我嘗試了建議的解決方案在這裏(https://stackoverflow.com/a/31426408/3659230),當我做我得到這個錯誤:DOMDocument :: loadHTML()期望參數2很長,嘗試使用LIBXML_HTML_NOIMPLIED參數時給出的字符串

DOM文檔:: loadHTML()預計參數2長,串給出

$doc = new DOMDocument(); 
libxml_use_internal_errors(true); 
$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED|LIBXML_HTML_NODEFDTD); 

似乎很簡單,但我似乎無法得到它的工作。我正在使用PHP版本5.5.3

回答

0

LIBXML_HTML_NOIMPLIEDLIBXML_HTML_NODEFDTD僅從PHP 5.4起向上定義。

如果一個常量沒有定義,PHP(idiotically)將它視爲一個字符串。因此,對PHP 5.3及以下,你的代碼實際上是

$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), 'LIBXML_HTML_NOIMPLIED'|'LIBXML_HTML_NODEFDTD'); 

,或者一旦位運算符已被執行:

$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), 'LIBXML_HTML_NOMMVL]ED'); 

這顯然不是你想什麼!如果可能的話,您的最佳選擇是升級到更新版本的PHP。

+0

我使用的PHP版本5.5.3,所以它似乎不是它的版本問題。 – dpst

+0

@dpst你可以檢查libxml的版本嗎? 'var_dump(LIBXML_DOTTED_VERSION);' – lonesomeday

+0

libxml版本是2.7.6 – dpst

相關問題