2012-07-06 97 views
0

我挖了近5個小時的解決方案,我不能相信,我要問我的第一個問題在這裏對於這樣一個簡單的問題,因此代碼:的DOMNodeList長度返回0

$urlContents = file_get_contents('http://www.google.com'); 
$dom = new DOMDocument(); 
$contents = $dom->loadHTMLFile($urlContents); //$contents = 'source code from www-google.com' 
$divsInDomDoc = $dom->getElementsByTagName('div'); // $divsInDomDoc becames a DomNodeList with length = 0 
$nNodes = $divsInDomDoc->length // using this to check length 

請有人幫忙!

+0

你的代碼沒有錯誤處理。例如。如果出現錯誤,file_get_contents()返回false - > if(false === $ urlContents){/ *錯誤處理在這裏* /}'。與$ dom-> loadHTML/loadHTMLFile問題一樣。如果這種處理已經到位,你會大大增加你迅速找到錯誤的機會;-) – VolkerK 2012-07-06 14:01:59

+0

感謝您的提示VolkerK,有時我依靠調試太多。我看到了xDebug的虛假價值,甚至認爲我無法解決問題。 – frenesim 2012-07-14 00:37:22

回答

1

除了Tim Cooper的更改外,還需要使用loadHTML()而不是loadHTMLFile(),因爲您已將該網站的內容放入字符串中。 loadHTMLFile()用於讀取文件。

$contents = $dom->loadHTML($urlContents); 
+0

感謝百萬。就是這樣。我總是試圖讀得慢一些,想得更遠。感謝您向我展示如何做ti。 – frenesim 2012-07-06 14:24:19