0
我試圖從標準HTML文檔的<body>
標籤中提取所有內容。簡單的HTML DOM加載()返回null
function extractHtml($html){
$doc = new simple_html_dom();
$html = $doc->load($html);
return $doc->find("body")->innertext;
}
的傳遞$html
是一個完整的HTML文檔,但是當它被使用加載load()
是返回NULL。這則顯然使find()會產生一個通知
注意:試圖讓非對象
的財產還有什麼能對負載的原因()返回null?
在過去,我已經完成了;
function extractHtml($html){
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
// get everything inside of <body>
$body = $dom->getElementsByTagName('body');
if($body && 0<$body->length) {
$body = $body->item(0);
}
$search = array('<body', 'body>');
$replace = array('<div', 'div>');
return str_replace($search, $replace, $dom->saveHTML($body));
}
雖然我現在需要這個舊版本的PHP的工作,以解決這個錯誤
警告:DOM文檔:: saveHTML()方法期望的是0,參數,1給出
這是使用簡單的html dom進行測試的原因。
編輯: 當測試如果我通過更改HTML如下所示從文檔複製示例,我仍然會得到相同的錯誤。
$doc->load("<html><body>Hello!</body></html>");
你確定'find()產生通知,而不是' - > innertext'?就像in中一樣,'$ doc'可能不是'NULL',但find'find'返回'null'? – Nanne
根據文檔http://simplehtmldom.sourceforge.net/index.htm,它只適用於PHP 5 + ....所以當你說'雖然我現在需要這個工作在舊版本的PHP來解決這個錯誤',它可能有問題與PHP v <5 –
@南妮是的,你是正確的,因爲當我刪除find(「身體」)它的作品。雖然爲什麼它不能找到身體? –