2012-07-06 96 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