Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo extraer los atributos src, title y alt de una imagen HTML mediante PHP?

26 de septiembre de 2011

Necesito crear un script de PHP que liste todas las imágenes de mi sitio web con su título y texto alternativo, si existe.

Ya he desarrollado la parte que encuentra todos los archivos HTML del sitio y los procesa para extraer las imágenes. Pero ahora estoy atascado en la parte que debe extraer el valor de los atributos src, title y alt. Las imágenes de mi sitio tienen esta pinta:

<img src="/image/fluffybunny.jpg" title="Harvey the bunny" alt="Cute little fluffy bunny" />

Supongo que tendré que utilizar expresiones regulares para extraer los valores de los atributos, pero no se muy bien cómo hacerlo de manera elegante.

Estás leyendo una traducción autorizada de la pregunta How to extract img src, title and alt from html using php? planteada por Sam en StackOverflow.

Respuestas

#1

Utilizar expresiones regulares podría funcionar en algunos casos, pero es casi imposible hacerlo funcionar sin error en todos los casos. Recuerda que el código HTML podría estar mal formado (a propósito o sin querer), por lo que hacer una expresión regular robusta que funcione siempre es casi imposible.

Lo mejor es utilizar una herramienta que procese HTML/XML y después del procesamiento, obtener el valor de los atributos de los nodos de tipo <img>. Con PHP esto es facilísimo:

$html = file_get_contents('/ruta/del/archivo.html');
 
$doc = new DOMDocument();
@$doc->loadHTML($html);
 
$imagenes = $doc->getElementsByTagName('img');
 
foreach ($imagenes as $imagen) {
    $alt   = $imagen->getAttribute('alt');
    $src   = $imagen->getAttribute('src');
    $title = $imagen->getAttribute('title');
}

@librosweb

9 octubre 2014, 22:32