2012-07-09 168 views
14

Quiero cambiar el valor del atributo de una etiqueta con PHP DOMDocument.Cambiar el valor del atributo de la etiqueta con PHP DOMDocument

Por ejemplo, digamos que tenemos esta línea de HTML:

<a href="http://foo.bar/">Click here</a> 

que cargar el código en PHP como sigue:

$dom = new domDocument; 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

que quieren cambiar el valor "href" a " http://google.com/ "utilizando la extensión DOMDocument de PHP. es posible?

¡Gracias por la ayuda como siempre!

Respuesta

21
$dom = new DOMDocument(); 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

foreach ($dom->getElementsByTagName('a') as $item) { 

    $item->setAttribute('href', 'http://google.com/'); 
    echo $dom->saveHTML(); 
    exit; 
} 
+0

Gracias tan mucho! – apparatix

4
$dom = new domDocument; 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

$elements = $dom->getElementsByTagName('a'); 

if($elements instanceof DOMNodeList) 
    foreach($elements as $domElement) 
     $domElement->setAttribute('href', 'http://www.google.com/'); 
+1

Se modificó la cantidad de votos porque incluyó una verificación de tipo, pero recuerde que en los lenguajes tipo C es una buena idea * siempre * encerrar el cuerpo de un bucle condicional o bucle, incluso si solo es una afirmación (ya que si luego agrega Otra declaración y se olvida de agregar llaves se verá como si fuera parte del cuerpo cuando realmente no lo es, lo que puede causar errores realmente difíciles de encontrar. – ebohlman

+0

Bien. Gracias – iDexter

+0

La verificación de tipo es realmente bastante inútil aquí; 'DOMDocument :: getElementsByTagName' siempre devuelve un' DOMNodeList' para que siempre se ejecute el bloque 'if'. – cspray

Cuestiones relacionadas