Вставить созданный элемент в начале HTML-тега, используя PHP DOM - PullRequest
3 голосов
/ 05 июля 2010

Я пытаюсь вставить тег HTML <base> сразу после открытия тега <head> страницы, используя dom.Я пытался использовать appendChild, который просто вставляет его перед </head>, что не годится.

Код im, используя:

$head = $dom->getElementsByTagName('head')->item(0);
$base = $dom->createElement('base');
$base->setAttribute('href', $url);
$head->parentNode->insertBefore($base, $head);

Это вставляет тег <base> перед<head>, что все еще не хорошо!

Есть идеи?Пиво за правильный ответ!

1 Ответ

9 голосов
/ 05 июля 2010
$head = $dom->getElementsByTagName('head')->item(0);
$base = $dom->createElement('base');
$base->setAttribute('href',$url);

if ($head->hasChildNodes()) {
    $head->insertBefore($base,$head->firstChild);
} else {
    $head->appendChild($base);
}

Если элемент <head> уже имеет дочерние элементы, он вставляет элемент <base> перед первым дочерним элементом <head>. Если у <head> нет детей, он просто добавляет его к <head>.

...