PHP DOM replace element with a new element
It's easy to find elements from a DOM using getElementsByTagName
. Indeed you wouldn't want to go near regular expressions for this.
If the DOM you are talking about is a PHP DOMDocument
, you'd do something like:
$embeds= $document->getElementsByTagName('embed');foreach ($embeds as $embed) { $src= $embed->getAttribute('src'); $width= $embed->getAttribute('width'); $height= $embed->getAttribute('height'); $link= $document->createElement('a'); $link->setAttribute('class', 'player'); $link->setAttribute('href', $src); $link->setAttribute('style', "display: block; width: {$width}px; height: {$height}px;"); $embed->parentNode->replaceChild($link, $embed);}
Edit re edit:
$dom->replaceChild($e, $a); // this line doesn't work
Yeah, replaceChild
takes the new element to replace-with as the first argument and the child to-be-replaced as the second. This is not the way round you might expect, but it is consistent with all the other DOM methods. Also it's a method of the parent node of the child to be replaced.
(I used class
not id
, as you can't have multiple elements on the same page all called id="player"
.)