I have a DOM object with loaded HTML markup. I’m trying to replace all embed tags that look like this:
<embed allowfullscreen="true" height="200" src="path/to/video/1.flv" width="320"></embed>
With a tag like this:
<a
href="path/to/video/1.flv"
style="display:block;width:320px;height:200px;"
id="player">
</a>
I’m having troubles figuring this out and I don’t want to use regular expression for this. Could you help me out?
EDIT:
This is what I have so far:
// DOM initialized above, not important
foreach ($dom->getElementsByTagName('embed') as $e) {
$path = $e->getAttribute('src');
$width = $e->getAttribute('width') . 'px';
$height = $e->getAttribute('height') . 'px';
$a = $dom->createElement('a', '');
$a->setAttribute('href', $path);
$a->setAttribute('style', "display:block;width:$width;height:$height;");
$a->setAttribute('id', 'player');
$dom->replaceChild($e, $a); // this line doesn't work
}
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:Edit re edit:
Yeah,
replaceChildtakes 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
classnotid, as you can’t have multiple elements on the same page all calledid="player".)