0

我想删除我的 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.                              
     }

谢谢您的帮助!

4

2 回答 2

1

您正在寻找一种名为DOMNode::replaceChild().

要利用它,您需要创建( )DOMText的a并返回一个自更新列表,因此当您替换第一个元素然后转到第二个时,不再有第二个,只有一个 a左边的元素。$valueDOMDocument::createTextNode()getElementsByTagName

相反,您需要一段时间来处理第一项:

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

沿着这些思路应该做的事情。

于 2013-08-27T21:29:43.647 回答
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.
于 2013-08-27T21:34:24.427 回答