使用php DOM api删除元标记的麻烦 [英] trouble in removing the meta tag using php DOM api

查看:87
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆