在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;
}