2013-03-14 67 views
0

我正在使用dom()来解析HTML中的内容。基本上在标签<img class="logo">调用成员函数find()在PHP中的非对象?

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

但在做这个,我有时会遇到不具有上述指定标签的HTML。

在这种情况下,它抛出一个错误 - Fatal error: call to member function find() on non-object

我不希望发生这个错误。相反,如果它无法找到指定的标签,我想跳过。

我也曾尝试的try-catch跳过错误,但它不能正常工作。

这是我的代码,

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

我想跳过如果dom是无法找到的标签。现在正在抛出错误。

任何帮助,将不胜感激。

+5

$ this-> dom'定义在哪里?那是什么导致你的错误。 – nickb 2013-03-14 17:03:45

+0

这个'SimpleHTML','Zend_Dom_Query'等是什么dom接口? – prodigitalson 2013-03-14 17:05:25

+0

$ this-> dom = @file_get_html($ url);这是dom的定义。它不会抛出所有情况下的错误。只有极少数情况下,它无法从file_get_html前面的@处找到 @nickb – user1518659 2013-03-14 17:06:13

回答

2

的错误意味着$this->dom不是一个对象,所以你不能使用$this->dom->find()

+0

如何检查$ this-> dom是否是一个对象?如果$ this-> dom不是对象,我想跳过。 – user1518659 2013-03-14 17:07:33

+0

使用'instanceof'或检查'null'或'false'或类似的。 – Arjan 2013-03-14 17:16:22

相关问题