Courte et simple fonction récursive pour lecture de répertoires

Contenu du snippet

Fonction récursive retournant les chemins des différents fichiers présents dans un répertoire et tous ses sous-répertoires dans un tableau en PHP4 (équivalent scandir() en PHP5) avec la possibilité de préciser des exeptions (fichier à ne pas charger dans le tableau).

Utilisation :

$rep = "mon-repertoire/";
$rep=extract_files_paths_dir($rep,0);
print_r($rep);

Source / Exemple :


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

}

Conclusion :


Le tableau retourné sert comme base à tout traitement sur des fichiers (lecture,écriture,includes...). Si vous voyez comment la simplifier encore (en supprimant la var global $tab par exemple), je suis preneur.

A voir également

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.