I'm trying to change all <P> tags in a document to <DIV>. This is what I've come up with, but it doesn't seem to work:
$dom = new DOMDocument;
$dom->loadHTML($htmlfile_data);
foreach( $dom->getElementsByTagName("p") as $pnode ) {
$divnode->createElement("div");
$divnode->nodeValue = $pnode->nodeValue;
$pnode->appendChild($divnode);
$pnode->parentNode->removeChild($pnode);
}
This is the result I want:
Before:
<p>Some text here</p>
After:
<div>Some text here</div>
You are appending the div to your p which results in <p><div></div></p>, removing the p will remove everything.
Additionally $divnode->createElement() won't work when $divnode isn't initialized.
Try instead to use the DOMDocument::replaceChild() (the divs position in the dom will be the same as the ps).
foreach( $dom->getElementsByTagName("p") as $pnode ) {
$divnode = $dom->createElement("div", $pnode->nodeValue);
$dom->replaceChild($divnode, $pnode);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With