En esta ocasión nos centraremos en listar directorios y a su vez sus contenidos de manera recursiva, ya que nos sabemos que puede contener (la conocida estructura de árbol).
Aqui les listo las funciones de PHP que vamos a utilizar:
El funcionamiento sería el siguiente:
La función recibe una ruta. Por ejemplo, si queremos que liste los directorios de la carpeta donde está el archivo la llamaríamos con:
listar_directorios_ruta("./");
Lo primero que se hace es comprobar si la ruta recibida es un directorio.
if (is_dir($ruta)) { //... }
Si lo es realizaremos las acciones, pero si no lo es, mostraremos un mensaje diciendo que no es una ruta válida.
En el siguiente if extraemos el gestor de directorio y lo guardamos en una variable $dh
if ($dh = opendir($ruta))
Con un bucle while recorreremos cada elemento de ese directorio.
while (($file = readdir($dh)) !== false)
Dentro del bucle hacemos un if para saber si el elemento es un directorio
if (is_dir($ruta . $file) && $file!="." && $file!="..")
En caso que sea un directorio, simplemente escribimos en la página. Además, tenemos que ver si ese directorio contiene a su vez otros directorios. Para eso llamamos a la función de nuevo pasándole ese nuevo directorio. Así la función se llama a si misma para mostrar todo el árbol de carpetas.
Por último se cierra el gestor de directorio abierto previamente.
closedir($dh);
Con lo que nuestra función quedaría de la siguiente manera:
function listar_directorios($ruta){ // abrir un directorio y listarlo recursivo if (is_dir($ruta)) { if ($dh = opendir($ruta)) { while (($file = readdir($dh)) !== false) { //esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio //mostraría tanto archivos como directorios echo "Nombre de archivo: $file : Es un: " . filetype($ruta . $file); if (is_dir($ruta . $file) && $file!="." && $file!=".."){ //solo si el archivo es un directorio, distinto que "." y ".." echo "Directorio: $ruta$file"; listar_directorios_ruta($ruta . $file . "/"); } } closedir($dh); } }else echo "No es ruta valida"; }
Saludos y que lo disfruten!
1 comentarios:
epale le cambiaste el nombre a la funcion listar_directorios_ruta y es function listar_directorios gracias por la ayuda!
Publicar un comentario