Ответ 1
Легко найти элементы из 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. Также это метод родительского node дочернего элемента, который нужно заменить.
(я использовал class
not id
, так как вы не можете иметь несколько элементов на одной странице, все называемые id="player"
.)