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


Sé el primero en valorar

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

He leido y acepto el Aviso legal y condiciones de uso

Utilizamos cookies propias y de terceros para personalizar el contenido y los anuncios, ofrecer funciones de medios sociales y analizar el tráfico. Además compartimos información sobre el uso que haces de nuestra web con nuestros partners de medios sociales, de publicidad y de análisis web. Si continúas navegando estás dando tu consentimiento para la aceptación de nuestra Política de cookies.

ACEPTAR
Aviso de cookies