2013-03-14 109 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

相關問題