2010-07-05 3 views
3

J'essaie d'insérer une balise HTML <base> immédiatement après l'ouverture <head> tag d'une page en utilisant dom. J'ai essayé d'utiliser appendChild qui l'insère juste avant le </head> ce qui n'est pas bon.Insérer l'élément créé au début de la balise html en utilisant PHP DOM

code im en utilisant:

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

Ceci insère la balise <base> avant la <head>, qui est toujours pas bon!

Des idées? Bière pour la bonne réponse!

+0

Le parent est-il né? Je suppose que le parentnode des têtes est html. – fabrik

+0

Quel genre de bière? –

Répondre

7
$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); 
} 

Si l'élément <head> a déjà des enfants, il insère l'élément <base> avant le premier enfant de <head>. Si <head> n'a pas d'enfants, il suffit de l'ajouter à <head>.

+1

BIÈRE POUR VOUS !!! – DrShamoon

+7

* Glug Glug Glug * –

Questions connexes