我有以下代码:
$doc = new DOMDocument();
$doc->loadHTML($quiz['value']);
$imageElement = $doc->getElementsByTagName('img')->item(0);
}
if(is_object($imageElement)){
$image = $imageElement->getAttribute('src');
$imageElement->parentNode->removeChild($imageElement);
}else{
$image = '#';
}
$quiz['value'] = $doc->saveHTML();
但是,我收到以下错误:致命错误:在非对象上调用成员函数removeChild()。
加载的dom字符串可能包含也可能不包含img元素。 有谁知道我在这里做错了什么?非常感谢任何帮助!
答案 0 :(得分:3)
is_object()
对此不是一个好的测试,因为->item()
将返回一个对象,无论如何。如果在DOMNodeList中没有getElementsByTagName返回的实际匹配项,它就不会是DOMNode。
更好的方法是:
$images = $doc->getElementsByTagName('img');
if ($images->length > 0) {
$imgnode = $images->item(0);
$image = $imgnode->getAttribute('src');
$imgnode->parentNode->removeChild($imgnode);
} else {
$image = '#';
}