simple_html_dom:在非对象中调用成员函数find()

时间:2013-02-02 16:13:00

标签: simple-html-dom

这段代码已经好几个月了。输出由几行组成,其中包含给定用户名的统计信息。从中获取html页面的网站未关闭,file_get_html中页面的内容未发生变化。 突然(我检查过,没有人修改它)它停止了工作。这是相关部分:

[...]if ($FileAge > ($expiretime * 60) || 0 == filesize($cachename))
{
    include_once('simple_html_dom.php');
    $html = file_get_html('http://www.foo.com/search?what=user%3A'.YOUR_USER.'&search=Search');
    var_dump($html); //TEST
    $link = $html->find('.likeh4 lightGrey.', 0)->find('a', 0)->href;   // Get the last activity link
[...]

错误日志显示:

[02-Feb-2013 17:02:19 Europe/Berlin] PHP Fatal error:  Call to a member function find() on a non-object in /foo.php on line 22 (the line with $link).

var_dump($html)提供bool(false)

我有一个类似的脚本,它解析来自另一个网站的html页面。它也停止了工作。

[...]include_once('simple_html_dom.php');
$html = file_get_html('http://my.flightmemory.com/'.FLIGHTMEMORY_USER);
$chilometri_table = $html->find('table', 2);    [...]

我试图在我的网络服务器上保存其中一个html页面,但我没有收到这样的错误。 出于安全原因,我的主机是否禁用了某些php功能? (实际上,file_get_html来自simple_html_dom,而不是来自php本机函数)

任何提示? 感谢

2 个答案:

答案 0 :(得分:1)

可能太迟了但是:
Simple_html_dom有一个常量来检查给定的html大小 - MAX_FILE_SIZE。默认情况下它是600KB。对于大多数情况来说已经足够了,但如果你给定的html大于那个,它将失败并返回false并导致致命错误。

答案 1 :(得分:0)

如果你试图[href] 我有同样的问题并修复它。 需要有效它是一个simple_html_dom_node

if(is_a($html->find('.likeh4 lightGrey. a', 0),'simple_html_dom_node' )
  $link = $html->find('.likeh4 lightGrey. a', 0)->href;

OR

foreach ( $$html->find('.likeh4 lightGrey. a') as $links ) {
 $link =$links->href;
}