dongqianzong4275 2013-08-27 21:21
浏览 102
已采纳

操纵PHP domdocument字符串

I want to remove the element tag in my domdocument html.

I have something like

this is the <a href='#'>test link</a> here and <a href='#'>there</a>.

I want to change my html to

this is the test link here and there.

My code

 $dom = new DomDocument();
 $dom->loadHTML($html);
 $atags=$dom->getElementsByTagName('a');

 foreach($atags as $atag){
     $value = $atag->nodeValue;
//I can get the test link and there value but I don't know how to remove the a tag.                              
     }

Thanks for the help!

  • 写回答

2条回答 默认 最新

  • duan1443 2013-08-27 21:29
    关注

    You are looking for a method called DOMNode::replaceChild().

    To make use of that you need to create a DOMText of the $value (DOMDocument::createTextNode()) and also getElementsByTagName return a self-updating list, so when you replace the first element and then you go to the second, there is no second any longer, there is only one a element left.

    Instead you need a while on the first item:

    $atags = $dom->getElementsByTagName('a');
    while ($atag = $atags->item(0))
    {
        $node = $dom->createTextNode($atag->nodeValue);
        $atag->parentNode->replaceChild($node, $atag);
    }
    

    Something along those lines should do it.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里