操纵PHP domdocument字符串

时间:2013-08-27 21:21:52

标签: php domdocument

我想删除domdocument html中的元素标记。

我有类似

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

我想将我的html更改为

this is the test link here and there.

我的代码

 $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.                              
     }

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您正在寻找一种名为DOMNode::replaceChild()的方法。

要利用这一点,您需要创建DOMText $valueDOMDocument::createTextNode())的getElementsByTagName以及$atags = $dom->getElementsByTagName('a'); while ($atag = $atags->item(0)) { $node = $dom->createTextNode($atag->nodeValue); $atag->parentNode->replaceChild($node, $atag); } 返回自我更新列表,因此当您更换时第一个元素,然后你去第二个元素,没有第二个元素,只剩下一个元素。

相反,您需要在第一项上花一些时间:

{{1}}

这些方面应该做的事情。

答案 1 :(得分:0)

您可以使用strip_tags - 它应该按照您的要求进行操作。

<?php

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

echo strip_tags($string);

// output: this is the test link here and there.