php - 使用 PHP DOM 的 removeChild 不起作用

标签 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();

但是,我收到以下错误: 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/

相关文章:

php - 没有图像,也没有弹出窗口

php - 将来自两个不同 wordpress 的帖子合并到一个按日期排序的帖子页面

xml - PHP DOMNode insertAfter?

php - 如何使用 PHP 和 DOMDocument 生成包含页面本地化版本的 Google Sitemap

javascript - 使用 removeChild() 删除容器中的子元素不起作用

javascript - 无法删除动态添加的脚本

javascript - removeChild 函数不与 setTimeout 函数一起使用

php - SELECT 多行 WHERE 匹配两个条件

php - PHP失败,不确定原因

php - 在到达字符串中的第一个 p 标签之前删除每个 li 标签