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条)

报告相同问题?