2

我有以下代码:

$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 元素。有人知道我在这里做错了什么吗?任何帮助是极大的赞赏!

4

1 回答 1

4

is_object()这不是一个很好的测试,->item()无论如何都会返回一个对象。如果 getElementsByTagName 返回的 DOMNodeList 中没有实际的匹配项,它就不会是 DOMNode。

更好的方法是:

$images = $doc->getElementsByTagName('img');
if ($images->length > 0) {
   $imgnode = $images->item(0);
   $image = $imgnode->getAttribute('src');
   $imgnode->parentNode->removeChild($imgnode); 
} else {
   $image = '#';
}
于 2011-10-09T17:18:55.403 回答