martes, 5 de julio de 2011

Obtener el src de una imagen con php

Estoy metido en un interesante proyecto de aplicaciones Web para dispositivos móviles, incluyendo tabletos; y lo estoy realizando en php (a pesar de mi disgusto).

Los datos vienen de fuentes RSS y tengo que maquetar estos páginas html para que puedan ser visionadas en las pantallitas de los móviles.

Y lo primero que he de hacer es extraer las imágenes de la fuente RSS para redimensionarla y almacenarlas en la caché (sea con html5 o en el servidor).

Al principio me lié tratando el html como si fuera un string, con búsquedas y funciones de substring. Pero aquí me he encontrado una solución mucho más elegante: usar las funciones de XMLDom de PHP.

// Dado un documento html, obtiene las imagenes que contiene.
// El número de imágen válida es para cojer una específica (acuerdate que empieza por cero).
// Si se envía 99 no descarta ninguna.
function sacaImagen($CuerpoDelMensaje, $numeroDeImagenValida)
{
//$posicionFinal = strpos($CuerpoDelMensaje, "<br />");
//$imagen = substr($CuerpoDelMensaje, 0, $posicionFinal);
//echo $imagen;
$doc=new DOMDocument();
$doc->loadHTML($CuerpoDelMensaje);
$xml=simplexml_import_dom($doc);
$images=$xml->xpath('//img');

$numeroImagen = 0;
foreach ($images as $img) {

if(($numeroImagen == $numeroDeImagenValida) OR ($numeroDeImagenValida == 99))
{
echo '<img src="'. $img['src'] . '" alt="' . $img['alt'] . '" title="' . $img['title'] . '" />';
}
$numeroImagen++;
}
}


Lo mejor es que lo puedo utilizar con cualquier tag html para obtener cualquier atributo de una forma muy cómoda.

No hay comentarios: