Encontrar la primera imagen con PHP
Cuando trabajamos con bases de datos o archivos json, éstos vienen con código html y a veces es necesario obtener solamente la primera imagen.
Esta función retornaImagen() me ha servido en muchas ocasiones para extraer la imagen de un texto enriquecido con html.
La función recibe dos datos:
- La variable con todo el código html.
- Una URL de una imagen alternativa
La función devolverá la URL de la primera imagen encontrada (jpg, png, gif o jpeg), caso contrario devolverá la url de la imagen alternativa.
Si falla la búsqueda de la imagen, por ejemplo debido a que el scr contiene una imagen de tipo base64, el cual es un código muy largo, la función también devolverá la imagen alternativa.
function retornaImagen($texto, $foto) {
$texto = html_entity_decode($texto);
$inicio = strpos($texto, 'src="');
$fin = 0;
if ((int) strpos($texto, '.jpg') != 0) {
$finImagen['jpg'] = (int) strpos($texto, '.jpg');
}
if ((int) strpos($texto, '.png') != 0) {
$finImagen['png'] = (int) strpos($texto, '.png');
}
if ((int) strpos($texto, '.JPG') != 0) {
$finImagen['JPG'] = (int) strpos($texto, '.JPG');
}
if ((int) strpos($texto, '.PNG') != 0) {
$finImagen['PNG'] = (int) strpos($texto, '.PNG');
}
if ((int) strpos($texto, '.jpeg') != 0) {
$finImagen['jpeg'] = (int) strpos($texto, '.jpeg');
}
if ((int) strpos($texto, '.JPEG') != 0) {
$finImagen['JPEG'] = (int) strpos($texto, '.JPEG');
}
if ((int) strpos($texto, '.GIF') != 0) {
$finImagen['GIF'] = (int) strpos($texto, '.GIF');
}
if ((int) strpos($texto, '.gif') != 0) {
$finImagen['gif'] = (int) strpos($texto, '.gif');
}
$valorBajo = array_values($finImagen);
$fila = array_search(min($valorBajo), $finImagen);
if ($fila == 'jpeg' OR $fila == 'JPEG') {
$digitoResta = 0;
} else {$digitoResta = 1;}
$fin = $finImagen[$fila];
if ($inicio != FALSE) {
$salida = rawurldecode(substr($texto, $inicio + 5, $fin - $inicio - $digitoResta));
if (strlen($salida) < 256) {
return $salida;
} else { return $foto; }
} else {
return $foto;
}
}
¿Cómo usarla?
Es sencillo, primero asegúrate de asignar una url de la imagen alternativa a la variable $foto con esto ya podrás trabajar, luego la función la usas con los dos datos que ya tienes.
$foto = 'https://www.guiaplaza.com/imagenes/juan-gomez-bLBrjMXw-5k-unsplash.jpg';
echo retornaFoto($texto, $foto);
Es sencillo
Comentarios
Publicar un comentario