2011-08-14 15 views
5

Aquí es parte de código¿Cómo agregar clase a un objeto img en DOM, PHP?

$doc = new DOMDocument(); 
$doc->loadHTML($article_header); 

$imgs = $doc->getElementsByTagName('img'); 
foreach ($imgs as $img) { 

En $imgs va etiqueta img DOM. Ahora quiero cambiar la etiqueta img original agregando algo de clase a ella.

lo que si el $article_header fue la siguiente:

"some text"...<img src = 'http://some_source'>...some text... 

Ahora quiero que se convierta en esto:

"some text"...<img class = 'someclass' src = 'http://some_source'>...some text... 

ACTUALIZACIÓN

repito. La variable de inicio es $article_header. Entonces todos los cambios deben hacerse.

Con mi código acabo de buscar a través de $article_header de etiquetas img, la búsqueda de ellos poniéndolos en algunas variables y cambiarlas no está bien, pero ¿cómo puedo poner todos los cambios de nuevo a $article_header ???

+0

leer setFunción de atributo –

+0

Creo que podría haber una manera más simple de solución usando simplemente css. ¿Puedes mostrarnos para qué necesitas todo eso? – Chronial

+0

Ahora creo que es un poco complicado hacerlo con CSS. Tengo tinymce y el usuario inserta la imagen en él, cuando minúscula lo envía a php, necesito imágenes para tener algo de clase para luego ver el resultado javascript podría disparar alguna galería de imágenes en la clase de orientación de clic de imagen – David

Respuesta

10

En su bucle foreach, llame $img->setAttribute('class', 'someclass');. Esto debería funcionar. Ver más en http://docs.php.net/manual/en/domelement.setattribute.php

Luego debe guardar el documento modificado usando $article_header = $doc->saveXml();.

+0

Ok agregaré clase a $ img, pero el problema es $ article_header seguirá siendo el mismo. ¿Cómo cambiar las cosas allí? – David

+0

Edité mi respuesta para agregar esa parte. La segunda parte debe hacerse fuera del alcance de lo contrario es un desperdicio. – Seldaek

+0

intentando ... escribirá – David

7

Si sabe que el elemento no tendrá una clase ya establecido sólo puede utilizar DOMElement::setAttribute(), como:

$img->setAttribute('class','someClass'); 

Si no está seguro de si el elemento ya podría tener un conjunto de clases, entonces debería Haz un getAttribute() primero y luego agrega tu clase a la lista de clases.

Cuestiones relacionadas