【问题标题】:simple_html_dom: Call to a member function find() on a non-object insimple_html_dom:在非对象上调用成员函数 find()
【发布时间】:2013-01-17 19:09:02
【问题描述】:

这段代码已经运行好几个月了。输出由几行组成,其中包含给定用户名的统计信息。取html页面的网站没有down,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原生函数)

有什么提示吗? 谢谢

【问题讨论】:

    标签: simple-html-dom


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您尝试获取 [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;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多