Найти элементы из DOM легко, используя getElementsByTagName
. В самом деле, вы бы не хотели использовать для этого регулярные выражения.
Если DOM, о котором вы говорите, это PHP DOMDocument
, вы бы сделали что-то вроде:
$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);
}
Изменить, отредактировать:
$dom->replaceChild($e, $a); // this line doesn't work
Да, replaceChild
принимает новый элемент для замены в качестве первого аргумента, а дочерний элемент для замены - в качестве второго. Вы не можете ожидать этого, но это согласуется со всеми другими методами DOM. Также это метод родительского узла дочернего элемента, подлежащего замене.
(я использовал class
, а не id
, так как вы не можете иметь несколько элементов на одной странице под названием id="player"
.)