dirlist
dirlist
SYNOPSIS
dirlist($dir='.')
DESCRIPTION
dirlist
retourne un tableau contenant tous les noms des fichiers du répertoire $dir
et de tous ses sous-répertoires.
dirlist
parcourt le répertoire courant par défaut.
Si $dir
n'est pas un répertoire, dirlist
retourne false
.
CODE
- function dirlist($dir='.') {
- if (!is_dir($dir)) {
- return false;
- }
- $files = array();
- dirlistaux($dir, $files);
- return $files;
- }
dirlist
initialise $dir
avec le nom du répertoire courant par défaut, retourne false
si $dir
n'est pas un répertoire, appelle la fonction auxiliaire $dirlistaux
avec le nom du répertoire à parcourir et un tableau vide.
dirlist
retourne le tableau rempli par $dirlistaux
.
- function dirlistaux($dir, &$files) {
- $handle = opendir($dir);
- while (($file = readdir($handle)) !== false) {
- if ($file == '.' || $file == '..') {
- continue;
- }
- $filepath = $dir == '.' ? $file : $dir . DIRECTORY_SEPARATOR . $file;
- if (is_link($filepath))
- continue;
- if (is_file($filepath))
- $files[] = $filepath;
- else if (is_dir($filepath))
- dirlistaux($filepath, $files);
- }
- closedir($handle);
- }
$dirlistaux
remplit le tableau $files
avec les noms de tous les fichiers du répertoire $dir
et de tous ses sous-répertoires. Notez que $dir
est passé par référence. $dirlistaux
lit le répertoire $dir
fichier par fichier, saute le fichier si c'est le répertoire lui-même ou son parent ou un lien, ajoute le nom du fichier à $files
si c'est un fichier ordinaire, se rappelle récursivement avec le nom du fichier en argument si c'est un répertoire.
Commentaires