Listar un directorio con php es muy útil para visualizar de forma rápida el contenido de una carpeta de nuestro proyecto, si añadimos un poco de imaginación podemos utilizarlo para crear un listado, un menú dinámico o cualquier otro elemento que podamos necesitar, para ello, php dispone de funciones predefinidas que nos facilitarán esta tarea. Comenzamos creando un archivo index.php en el directorio raiz que contiene la carpeta del proyecto que queremos listar.

Lo primero que vamos a hacer es crear la función que llamaremos posteriormente, para crear esta función, vamos a utilizar las funciones de php scandir() y is_dir().

Creamos la función a la que pasaremos un parámetro que indicaremos en la llamada a la función e inicializaremos una variable a la que asignaremos el valor de la función scandir() que a su vez recibirá el valor del parámetro que le pasemos al llamar a la función.

<?php 
	function listadoDirectorio($directorio){
	    $listado = scandir($directorio);
	}
?>

Para optimizar mejor el resultado de la función vamos a utilizar la función unset() y la función array_search(), ambas de php, para evitar que se visualicen los enlaces a las carpetas padre y de paso hacemos un if para evitar que se visualicen los directorios vacíos.

	    unset($listado[array_search('.', $listado, true)]);
	    unset($listado[array_search('..', $listado, true)]);
	    if (count($listado) < 1) {
	        return;
	    }

A continuación creamos un foreach con el que recorremos todos los directorios, utilizamos la función is_dir() para mostrar ficheros y directorios de diferente forma

	    foreach($listado as $elemento){
	    	if(!is_dir($directorio.'/'.$elemento)) {
	        	echo "<li>- <a href='$directorio/$elemento'>$elemento</a></li>";
	        }
	        if(is_dir($directorio.'/'.$elemento)) {
	        	echo '<li class="open-dropdown">+ '.$elemento.'</li>';
	    		echo '<ul class="dropdown d-none">';
	        		listadoDirectorio($directorio.'/'.$elemento);
	    		echo '</ul>';
	        }
	    }

Por último solo nos queda llamar a la función, este es el código completo:

<?php 
	function listadoDirectorio($directorio){
	    $listado = scandir($directorio);	    unset($listado[array_search('.', $listado, true)]);
	    unset($listado[array_search('..', $listado, true)]);
	    if (count($listado) < 1) {
	        return;
	    }
	    foreach($listado as $elemento){
	    	if(!is_dir($directorio.'/'.$elemento)) {
	        	echo "<li>- <a href='$directorio/$elemento'>$elemento</a></li>";
	        }
	        if(is_dir($directorio.'/'.$elemento)) {
	        	echo '<li class="open-dropdown">+ '.$elemento.'</li>';
	    		echo '<ul class="dropdown d-none">';
	        		listadoDirectorio($directorio.'/'.$elemento);
	    		echo '</ul>';
	        }
	    }
	}
	listadoDirectorio('nombre_carpeta');
?>

El código completo con todos los archivos y algo de css y js están disponible en mi cuenta de Github para su descarga desde el siguiente enlace:

Github: Mostrar directorio con php.

Valoraciones


2 valoraciones

  • Victor 11 marzo, 2022

    Bien hecho!

  • Diego Peralta 21 agosto, 2021

    excelente aporte me ayudoo bastante le agregue los iconos

Tu valoración


* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

CAPTCHA


Utilizamos cookies propias y de terceros para el correcto funcionamiento de la web, personalizar el contenido y mostrar publicidad en función de las preferencias del visitante. Puedes encontrar más información en nuestra Política de cookies.

ACEPTAR
Aviso de cookies