Fonction recursive de dossiers

Contenu du snippet

Encore une fonction de parcours de dossiers et sous dossiers, qui retourne ici un tableau associatif avec :
- en clé, le nom du fichier
- en valeur, le chemin

Source / Exemple :


function ScanDirectory($Directory, $fileTypes = null){

		$MyDirectory = opendir($Directory) or die('Erreur');
		while(false !== ($Entry = @readdir($MyDirectory))) {
			if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
				$tmp = ScanDirectory($Directory.'/'.$Entry, $fileTypes);
				$files = array_merge((array)$files, (array)$tmp);
			} else {
				// si le tableau est renseigné
				if (is_array($fileTypes)) {
					// on recupère l'extension du fichier
					$ext = get_file_extension($Entry);
					// on vérifie qu'elle fait partie de celles autorisée
					if (in_array ($ext, $fileTypes)) {
						$files[$Entry] = $Directory.'/';
					}
					// sinon, on mets toutes les occurences
				} else {
					$files[$Entry] = $Directory.'/';
				}
				
				/* note : on stocke les valeurs dans un tableau associatif :

  • clé nom du fichier
  • valeur chemin du fichier
  • /
} } closedir($MyDirectory); return $files; } function get_file_extension($file_name) { return substr(strrchr($file_name,'.'),1); }

Conclusion :


utiliser cette fonction ainsi :

$extensions = Array('jpg');
$files = ScanDirectory('../images', $extensions);

foreach($files as $cle => $valeur) {
echo $cle . ' : ' . $valeur;
}

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.