我正在发出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');
}
答案 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");
}