PHP: ¿Cómo leer un a pagina web y sacar las imagenes?
De Foros del Web
Con las siguiente funcion podemos hacerlo: Código PHP:
/** * Imagenes de un archivo HTML * * Examina un archivo HTML en busca de sus imagenes para * luego devolver su direccion relativa. * * @author fran86 <fran86@myrealbox.com> * @param string $archivo Path correspondiente al HTML a examinar. * @param bool $norepetidos Opcional para no repetir las imagenes. * @return array|false Array con los paths relativos de las imagenes * */ function imagenesHTML($archivo, $norepetidos = true) { $contenido = file($archivo); $contenido = array_map("trim", $contenido); $contenido = implode(" ", $contenido); if ( preg_match_all('/<img([^<>]+)>/i', $contenido, $match) ) { foreach($match[1] as $atributos) { if ( preg_match('/src="([^"]+)"/i', $atributos, $matchpaths) ) { $pathimgs[] = $matchpaths[1]; } elseif ( preg_match('/src=([^ ]+)/i', $atributos, $matchpaths) ) { $pathimgs[] = $matchpaths[1]; } unset($matchpaths); } } if ( !empty($pathimgs) ) { if ($norepetidos) { return array_unique($pathimgs); } else { return $pathimgs; } } else { return false; } }
Que la utilizamos de este modo: Código PHP:
$paths = imagenesHTML("http://www.forosdelweb.com/s/foro18.html"); // Ahora $paths es un array que contiene las direcciones (relativas) de todas las imagenes que aparecen en la pagina http://www.forosdelweb.com/s/foro18.html
Explicacion breve:
1. Leemos el archivo con file() hacia un array y lo transformamos a una cadema con implode() (*) 2. Aplicamos el patron '/<img([^<>]+)>/i' con preg_match_all() para buscar todos los tags <img XXX >. Notar que se utiliza /i al final para realizar una busqueda que no distinga mayusculas/minusculas. 3. Recorremos el array que resulta de la operacion anterior y aplicamos 2 patrones posibles que serviran para cazar el path del atributo SRC (dentro de <img>) este o no entre comillas.
(*)
Para abrir paginas "externas" (que empiezan con http://blablabla) es necesario setear allow_url_fopen = ON en el PHP.INI (http://ar2.php.net/manual/en/ref.fil...llow-url-fopen)
--Fran86 23 Dic 2003
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
