gpt4 book ai didi

PHP DOMDocument 未删除所有元素

转载 作者:行者123 更新时间:2023-12-03 08:56:08 29 4
gpt4 key购买 nike

我想删除所有 script 元素以及此处的代码

<?php
$pageFile = <<<EOF
<!DOCTYPE html><html><body>
<script src="aa"></script>
<script src="bb"></script>
<script src="cc"></script>
<div>aaa</div>
</body></html>
EOF;

$dom = new DOMDocument();
$dom->loadHTML($pageFile);

foreach ($dom->getElementsByTagName('script') as $item) {
$item->parentNode->removeChild($item);
}
$pageFile = $dom->saveHTML();
echo $pageFile;

但仍然存在 1 个 script 元素。您可以在线尝试here

结果:

<!DOCTYPE html>
<html><body>
<script src="bb"></script><div>aaa</div>
</body></html>

最佳答案

$dom->getElementsByTagName 返回的 DOMNodeList 是“实时”的。因此,当您删除脚本时,它将从节点列表中删除,并且列表中的所有元素都会将其索引向下移动。然后 for 循环转到下一个索引,最终跳过所有其他元素。

先将节点列表转换为数组。

foreach (iterator_to_array($dom->getElementsByTagName('script')) as $item) {
$item->parentNode->removeChild($item);
}

关于PHP DOMDocument 未删除所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55205955/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com