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
divto yourpwhich results in<p><div></div></p>, removing thepwill remove everything.Additionally
$divnode->createElement()won’t work when$divnodeisn’t initialized.Try instead to use the DOMDocument::replaceChild() (the
divs position in the dom will be the same as theps).