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
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(' ', ($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.