使用PHP DOM的removeChild不起作用

时间:2011-10-09 16:36:14

标签: php domdocument removechild dom-node

我有以下代码:

$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元素。 有谁知道我在这里做错了什么?非常感谢任何帮助!

1 个答案:

答案 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 = '#';
}