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!
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.
You could just use strip_tags
- it should do what you've asked.
<?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.