Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中对非对象调用成员函数find()?_Php_Dom_Find_Fatal Error - Fatal编程技术网

在PHP中对非对象调用成员函数find()?

在PHP中对非对象调用成员函数find()?,php,dom,find,fatal-error,Php,Dom,Find,Fatal Error,我正在使用dom()解析HTML中的内容。基本上在标签内 我正在使用$this->dom->find('img[class=logo])获取值 但在执行此操作时,有时我会遇到一个HTML,它没有上面指定的标记 在这种情况下,它抛出了一个错误-致命错误:对非对象调用成员函数find() 我不希望那个错误发生。相反,如果找不到指定的标记,我想跳过 我也尝试过跳过错误,但效果不好 这是我的密码 如果dom找不到标记,我想跳过。它现在正在抛出错误 任何帮助都将不胜感激。该错误意味着$this->dom不

我正在使用
dom()
解析HTML中的内容。基本上在标签内

我正在使用
$this->dom->find('img[class=logo])
获取值

但在执行此操作时,有时我会遇到一个HTML,它没有上面指定的标记

在这种情况下,它抛出了一个错误-
致命错误:对非对象调用成员函数find()

我不希望那个错误发生。相反,如果找不到指定的标记,我想跳过

我也尝试过跳过错误,但效果不好

这是我的密码

如果
dom
找不到标记,我想跳过。它现在正在抛出错误


任何帮助都将不胜感激。

该错误意味着
$this->dom
不是对象,因此您不能使用
$this->dom->find()

在哪里定义了
$this->dom
?这就是导致错误的原因。这是什么dom接口?$this->dom=@file\u get\u html($url);这是dom的定义。并非所有情况下都会出现错误。只有在少数情况下,它无法从文件前的@找到@nickbrom\u get\u html。我猜它有时会返回警告或错误,而您忽略了这些警告或错误,而不是处理它们。因此,您正在使用这些警告或错误。发生的情况是,它无法加载您的html文件。并不是说
标签不在那里。SimpleHTMLDOM无法构造对象。删除
@
以便停止抑制
文件\u get\u html()
上的错误消息,这将有助于显示问题。如何检查$this->dom是否为对象?如果$this->dom不是对象,我想跳过。请使用
instanceof
或检查
null
false
或类似项。
try {
    foreach ($this->dom->find('img[class=logo]') as $result) {
        //echo $result->src."\n";
        $li_img = $result->src;
    }
    if(!isset($li_img))
        return;
    else
        return $li_img;
} catch(Exception $e) {
    return;
}