Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 467 fois - Téléchargée 15 fois
function extract_files_paths_dir($rep,$exeptions=" ") {//Exeptions regex global $tab,$z; //vars à transmettre à la fonction elle même if (!isset($z)) $z=0; //incrémentation if ($z==0) unset($tab); //effacer tab si c'est la première boucle $dir = opendir($rep); //ouverture répertoire while ($f = readdir($dir)) {//A //lecture répertoire if((is_file($rep.$f))&&(!eregi($exeptions,$f))) {//B /* Un fichier ? > ajouter + incrémentation*/ $tab[]=$rep.$f; $z++; } //B elseif (is_dir($rep.$f)) { //C /* Un répertoire ? > Appeler la fonction de manière récursive*/ if (!ereg("\.+",$f)) {//D extract_files_paths_dir($rep.$f."/"); }//D }//C }//A asort($tab); return $tab; //retourne le tableau }
sans compter que les fonctions ereg* sont bien moins rapides que leurs équivalentes en preg_*.
C'est vraiment un vieux code...pourquoi le ressortir ?
Allez, Winwarrior vous a mis sur la piste avec la SPL... Comment faire ça en 3 lignes :
foreach ($iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $item) {
echo str_repeat("\t", $iterator -> getDepth()), $item -> getFilename(), "\n";
}
Si je peux me permettre, y'a même des sources qui utilisent déjà la SPL pour parcourir des fichiers, et y'en a même qui permettent d'appliquer des filtres pour ne lister que certains fichiers...
while ($f = readdir($dir)) {
Quitte à utiliser cette vieille fonction php3, autant le faire bien :
while (FALSE !($f readdir($dir))) {
Cf la doc : http://fr.php.net/readdir Exemple #1
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.