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 div
s position in the dom will be the same as the p
s).
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