Comment lister le contenu d'un répertoire en PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2019-08-20 13:37:15
Thèmes : script - webmaster - php
Question

Comment faire pour lister le contenu d'un répertoire en PHP ?

Réponse

Voici une fonction en PHP qui permet de lister le contenu, fichiers et dossiers, d'un répertoire. La fonction utilise les fonctions PHP natives suivantes :

Placez le script PHP suivant dans le répertoire dont vous voulez voir le contenu et lister les fichiers et sous-dossiers.

<?php
error_reporting(E_ALL);
ini_set("display_errors", 0);

function lister_fichiers($rep)  
{  
	if(is_dir($rep))  
	{  
		if($iteration = opendir($rep))  
		{  
			while(($fichier = readdir($iteration)) !== false)  
			{  
				if($fichier != "." && $fichier != ".." && $fichier != "Thumbs.db")  
				{  
					echo '<a href="'.$rep.$fichier.'" target="_blank" >'.$fichier.'</a><br />'."\n";  
				}  
			}  
			closedir($iteration);  
		}  
	}  
} 

lister_fichiers("./");
?>
Réponse

Si vous voulez lister le contenu du répertoire de manière récursive, et afficher tous les sous-dossiers et leurs contenus, utilisez la fonction suivante :

<?php
error_reporting(E_ALL);
ini_set("display_errors", 0);

function getDirrecurse($path = '.', $level = 0)
{
	$ignore = array('cgi-bin', '.', '..');
	$dir = @opendir($path);
		while(false !== ($file = readdir($dir)))
		{ 
			if(!in_array($file, $ignore))
			{     
				$spaces = str_repeat('&nbsp;', ($level*4));	 
				if(is_dir("$path/$file"))
				{ 
					echo "<strong>$spaces $file</strong><br />"; 
					getDirrecurse( "$path/$file", ($level+1));       
				} 
				else 
				{ 
					echo "$spaces $file<br />"; 
				}
			}
		}
	closedir($dir); 
}

getDirrecurse();
?>

Prêtez une attention particulière à la ligne suivante :

$ignore = array('cgi-bin', '.', '..');

Ajoutez y éventuellement des noms de répertoires qui devraient être exclus. Par ailleurs $spaces et $level ne sont utilisés que pour gérer l'affichage. Vous pouvez les shunter si nécessaire.