我有以下代码:
$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();
但是,我收到以下错误: fatal error :在非对象上调用成员函数removeChild()。
加载的 dom 字符串可能包含也可能不包含 img 元素。 有人知道我在这里做错了什么吗?非常感谢任何帮助!
最佳答案
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 = '#';
}
关于php - 使用 PHP DOM 的 removeChild 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7704901/