2016-11-28 68 views
3

我有一個簡單的刮取器,它使用DomDocument獲取HTML,然後顯示結果。PHP嘗試使用getElementsByTagName獲取非對象的屬性

foreach ($dom->getElementsByTagName('li') as $li) { 
     $key = $li->getElementsByTagName('span')->item(0)->textContent; 
     $value = $li->getElementsByTagName('strong')->item(0)->textContent; 
     $results[trim($key)] = trim($value); 
     } 

但是,如果腳本無法檢索HTML,或輸入的選項是錯誤的,它會返回

Trying to get property of non-object 

$key = $li->getElementsByTagName('span')->item(0)->textContent; 

我如何檢查它是否存在?

我試圖設置$key行作爲變量,並檢查長度是否大於0,但即使作爲變量它失敗。

+0

可能的重複[參考 - 這個錯誤在PHP中意味着什麼?](http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) – Dezza

回答

2

檢查item方法的返回值:

$span = $li->getElementsByTagName('span')->item(0); 
if (!$span) { 
    continue; 
} 

其實你應該總是檢查返回值。

+0

Thankyou,我還添加了對所有值的檢查。 – ServerSideSkittles

相關問題