Récupérer le contenu d’un répertoire

Voici une fonction simple à utiliser afin de récupérer automatiquement le contenu d’un répertoire en php.

De nombreuses techniques permettent de lire le contenu d’un répertoire. Dans ce script php, la boucle permet de détecter les fichiers contenus dans ce dossier mais aussi de sous-dossier et si il y en a, de détecter les fichiers.

Les éléments détectés dans un dossier sont mis dans un tableau (array). Les fonctions php sur les Array permettent de triés les éléments du tableau. Une nouvelle boucle est créée en cas de détection d’un sous-répertoire.



function list_my_folder($repertoire){
$fichier = array();
if (is_dir($repertoire)){
//ouvre le repertoire courant désigné par la variable
$dir = opendir($repertoire);

//on lit tout et on récupére tout les fichiers dans $file
while(false!==($file = readdir($dir))){

if(!in_array($file, array('.','..'))){
//on eleve le parent et le courant '. et ..'
//sort l'extension du fichier
$page = $file;

$page = explode('.', $page);

$nb = count($page);

$nom_fichier = $page[0];

for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}

if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}

else {
//on rajoute un "/" devant les dossier pour qu'ils soient triés au début
if(!is_file($file)) { $file = '/'.$file;
// on repart sur une nouvelle boucle au cas ou il y est des sous-répertoires
$sub_directory_to_scan = $repertoire.$file;
list_my_folder($sub_directory_to_scan);
}

$ext_fichier = '';

}
// exclure certains types de fichiers que l'on ne veux pas lister
if($ext_fichier != 'php' and $ext_fichier != 'html') {
array_push($fichier, $file);
}
}
}
}

sort($fichier);

foreach($fichier as $value) {
$path_to_pict = $repertoire.'/'.str_replace ('/', '', $value);

echo '<a href="'.$repertoire.'/'.str_replace ('/', '', $value).'" title="Galerie photo"><img src="'.$repertoire.'/'.str_replace ('/', '', $value).'" border="0"></a>
';
}
}