致命错误:在非对象上调用成员函数find()

时间:2013-08-13 10:33:35

标签: php parsing

我是php的新手 我得到了

  

致命错误:在非对象错误

上调用成员函数find()

我包含了simple_html_dom.php

<?php
include 'simple_html_dom.php';
$htm = file_get_html('http://www.thatscricket.com');

$es = $htm->find('div[class=score_card_display_below_links]');

$value = $es[0]->href;

$link = "http://www.thatscricket.com/$value";

$html = file_get_html('$link');

$scr = $html->find('span');

echo "$scr";
?>

4 个答案:

答案 0 :(得分:2)

$html = file_get_html('$link');

这将尝试获取文字字符串'$link'(变量不会在单引号字符串中展开)。这意味着$html将为null或false。

由于$html不是一个对象,因此您无法在其上调用方法。

使用:

$html = file_get_html($link);

您还应该始终检查由于失败而可能为false或null的返回类型,以便您可以正常失败。

答案 1 :(得分:0)

$htm = file_get_html('http://www.thatscricket.com');

检查var_dump($htm); 我认为它会返回bool(false)

$html = file_get_html('$link'); 

应该是

$html = file_get_html($link);

答案 2 :(得分:0)

首先检查var_dump($htm),它必须返回null

答案 3 :(得分:0)

我也遇到了同样的错误,我发现它的解决方案来自php计数功能,如此

if( $htm ){
     $score_card_count = count($htm->find('div[class=score_card_display_below_links]'));
     $score_card_count = trim($score_card_count);
         if( $score_card_count > 0 )
         {
              $es = $htm->find('div[class=score_card_display_below_links]');
              $value = $es[0]->href;
         }
}

我希望通过这种方法可以解决我的错误。