使用php DOM api删除元标记的麻烦 [英] trouble in removing the meta tag using php DOM api
本文介绍了使用php DOM api删除元标记的麻烦的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
$html = new DOMDocument();
$html->loadHTMLFile($filename);
$meta = $html->getElementsByTagName("meta");
foreach($meta as $oldmeta_tags)
{
$parent = $oldmeta_tags->parentNode;
$parent->removeChild($oldmeta_tags);
}
echo "<br>Number of bytes stored = ".$html->saveHTMLFile($filename);
$result[] = file_get_contents($filename);
某些元标记被删除,有些则不是。请帮助我做错了
Some of the meta tags are removed and some are not. please help what i am doing wrong
推荐答案
当您使用 foreach
迭代 DOMNodeList
并删除元素,您正在更改 DOMNodeList
内容,因此节点将被跳过。您必须向后迭代:
When you use foreach
to iterate over the DOMNodeList
and remove an element, you are changing the DOMNodeList
content, so nodes will be skipped. You have to iterate backwards:
$nodes = $dom->getElementsByTagName('meta');
for ($i = $nodes->length - 1; $i >= 0; $i--) {
$nodes->item($i)->parentNode->removeChild($nodes->item($i));
}
这篇关于使用php DOM api删除元标记的麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文