2) { return false; } else { return true; } } // Supprime un repertoire non-vide function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object !== '.' && $object !== '..') { if (filetype($dir.'/'.$object) == 'dir') rrmdir($dir.'/'.$object); else unlink($dir.'/'.$object); } } reset($objects); rmdir($dir); } } // Parcours récursivement un dossier function recursive_readdir($dir, $array, $dirs=false) { # si $dirs=true liste les dossiers plutot que les fichiers global ${$array}; // Charge la tableau pour la sortie, déclaré à l'exterieur à cause de l'appel recursif de la fonction $dir = rtrim($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire if (is_dir($dir)) { $dh = opendir($dir); } else { exit; } while (($file = readdir($dh)) !== false ) { //boucle pour parcourir le repertoire if ($file !== '.' && $file !== '..') { $path = $dir.'/'.$file; if (is_dir($path)) { //si on tombe sur un sous-repertoire if($dirs) ${$array}[] = $path; recursive_readdir($path, $array, $dirs); // appel recursif pour lire a l'interieur de ce sous-repertoire } else { // si il s'agit d'un fichier if(!$dirs) ${$array}[] = $path; } } } closedir($dh); } ?>