par anonyme 20-Aout-2019

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

2 Réponses

par Antoine 20-Aout-2019

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("./");
?>
par Antoine 20-Aout-2019

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.

Bienvenue sur 1FORMATIK, où vous pouvez poser des questions en lien avec l'informatique et internet, et recevoir des réponses d'Antoine et d'autres internautes.

2.6k questions

3k réponses

...