php DOMDocument removeChild 抛出未找到的异常

php DOMDocument removeChild throws exception of not found

提问人:Tzook Bar Noy 提问时间:8/16/2022 最后编辑:BarmarTzook Bar Noy 更新时间:8/17/2022 访问量:160

问:

删除失败,并出现“未找到”异常。

PHP Fatal error:  Uncaught DOMException: Not Found Error
$document = new \DOMDocument();
$raw = '
some text
<a href="sad" sometag="true">linkkkk</a>
more text
';
$document->loadHTML($raw);

$links = $document->getElementsByTagName('a');
$a = $links->item(0);

$document->removeChild($a);
php xml dom dom 文档

评论


答:

1赞 The fourth bird 8/16/2022 #1

您可以将其从 parentNode 中删除$a

$document = new \DOMDocument();
$raw = '
some text
<a href="sad" sometag="true">linkkkk</a>
more text
';
$document->loadHTML($raw);

$links = $document->getElementsByTagName('a');
$a = $links->item(0);
$a->parentNode->removeChild($a);
0赞 ThW 8/17/2022 #2

getElementsByTagName()返回任何后代元素节点的列表。所以不是父节点。a$links

在 PHP > 8.0 中,您可以使用以下方法:DOMNode::remove()

$links = $document->getElementsByTagName('a');
$a = $links->item(0);
$a->remove();

或者使用以下属性:parentNode

$links = $document->getElementsByTagName('a');
$a = $links->item(0);
$a->parentNode->removeChild($a);