致命错误:调用成员函数getElementsByTagName()

时间:2014-05-15 19:44:24

标签: php object curl

我正在发出CURL请求,当ID存在时,此代码可以正常运行...

$dom = new DOMDocument();
@$dom->loadHTML($buffer);
$obj = $dom->getElementById('someid')->getElementsByTagName('tr');

但是当它不是我得到这个错误

Fatal error: Call to a member function getElementsByTagName()

哪个很好并且预期,但我不确定如何正确处理这个案例,我应该使用什么'if'或'try catch'来返回'找不到数据'消息?

我试过这个:

$obj = $dom->getElementById('someid');
if($obj->length > 0){
   $rows = $obj->getElementsByTagName('tr');
}

3 个答案:

答案 0 :(得分:2)

$obj = $dom->getElementById('someid');
if (!empty($obj)) {
    $obj = $obj->getElementsByTagName('tr');
} else {
    echo "No data found";
}

答案 1 :(得分:1)

如纪录片DOMDocument::getElementById()中所述,如果找不到该元素,则返回NULL,因此您必须检查NULL值。 例如:

if($obj = $dom->getElementById("someid")){
  $obj->getElementsByTagName("tr");
}

答案 2 :(得分:0)

该方法可能返回NULL(根据文档here),因此请检查not-null变量:

$dom = new DOMDocument();
@$dom->loadHTML($buffer);
$el = $dom->getElementById('someid');
if($el) {
    $obj = $el->getElementsByTagName('tr');
} else {
    throw new Exception("Element with id 'someid' was not found");
}