2011-07-21 11 views
6

¿Es posible analizar la lista de directorios de una página web que es externa dado que se puede acceder a la página web y muestra una lista de los archivos cuando accedo a ella? Solo quiero saber si es posible analizar los archivos dinámicamente en PHP y ¿cómo? -Gracias¿Puedo analizar la lista de directorios de una página web externa?

Disculpa, no se ha aclarado. Me refiero a una lista de directorios tales como: http://www.ibiblio.org/pub/ (Índice de/..) y la capacidad de leer el contenido como una matriz o algo fácil de manipular en mi secuencia de comandos

Respuesta

4

Puede utilizar preg_match o DomDocument

para su caso:

$contents = file_get_contents("http://www.ibiblio.org/pub/"); 
preg_match_All("|href=[\"'](.*?)[\"']|", $contents, $hrefs); 
var_dump($hrefs); 

Si quieres echar un vistazo a un working demo.

0

Sí, es muy posible. No estoy del todo claro a lo que se refiere al listado de directorios, pero debe investigar los rastreadores de sitios web. Esto es esencialmente lo que preguntas pero escrito en PHP.

+0

Creo que quiere analizar el listado de Apache (Opciones + Índices) – genesis

+0

Me refiero a la lista de directorios ... un directorio que contiene archivos (por ejemplo, carpeta de imágenes) en un dominio externo y necesito leer las imágenes en mi script, etc. –

0

PHP file_get_content hará el truco para usted.

(Asumiendo que su petición HTTP de esta página devuelve la lista de archivos, como usted ha mencionado)

+1

Sí, estoy seguro de que la página devuelve la lista de archivos con índice de/etc. Lo hizo gracias, ¿hay alguna manera de convertir esto a una matriz o algo así para leer cada archivo en la lista individualmente? –

+0

Conversión a matriz ---------- Puede dividirse con un separador, en nuestro caso el separador será "\ n" Supongo –

2

Si usted está recibiendo un listado del directorio de espalda que está lleno de enlaces en un documento XHTML adecuada puede utilizar DOMDocument y código como el siguiente para obtener una lista de los archivos:

$doc = new DOMDocument(); 
$doc->preserveWhitespace = false; 
$doc->load('directorylisting.html'); 

$files = $doc->getElementsByTagName('a'); 

$files es ahora una lista de DOMElement s que se puede recorrer y obtener el atributo href para obtener una ruta completa de los archivos de la listado.

Tenga en cuenta que este enfoque requiere una lista de directorios formada correctamente devuelta por el servidor. No puede, por ejemplo, hacer una solicitud en stackoverflow.com y obtener una lista de directorios de los archivos.

Si esto no funciona (HTML quizá mal formado) se puede utilizar expresiones regulares (por ejemplo preg_match_all.) Para encontrar <a etiquetas, como tales:

preg_match_all('@<a href\="([a-zA-Z\.\-\_\/ ]*)">(.*)</a>@', file_get_contents('http://www.ibiblio.org/pub/'), $files); 
var_dump($files); 

$files elementos seguirían estando emparejados, sólo un conjunto de matrices.


ACTUALIZACIÓN, he probado con su URL (http://www.ibiblio.org/pub/) y funciona bien (el método preg_match_all).

Cuestiones relacionadas