2016-11-28 65 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

相关问题