









Vous connaissez surement déjà la fonction glob de php qui sert lister les fichiers (ou les répertoires) qui correspondent à un masque.
Mais glob n'est pas récursive.
Voici donc une petite classe qui va vous permettre de faire la même chose (et même un peu plus) de façon récursive.
<?php class files { function getFiles($path,$filterExt=array("")) { $ret=array(); foreach ($filterExt as $Ext) $ret=array_merge($ret,(array) self::_getFiles($path,$Ext,false,"ONLYFILES")); return $ret; } function getFilesRecursive($path,$filterExt=array("")) { $ret=array(); foreach ($filterExt as $Ext) $ret=array_merge($ret,(array) self::_getFiles($path,$Ext,true,"ONLYFILES")); return $ret; } function getFolders($path) { return self::_getFiles($path,"",false,"ONLYDIRS"); } function getFoldersRecursive($path,$filterExt=array("*")) { return self::_getFiles($path,"",true,"ONLYDIRS"); } private function _getFiles($path,$filterExt,$recursif,$what) { if ($what == "ONLYDIRS") $files = glob($path."*",GLOB_ONLYDIR); else $files = glob($path."*"); if (count($files)==0) return array(); $filesList=array(); foreach($files as $file) { if (is_file($file) && ($filterExt == substr($file,-strlen($filterExt)))) $filesList[]=$file; elseif ($what == "ONLYDIRS") $filesList[]=$file; if ($recursif) $filesList = array_merge ($filesList,(array) self::_getFiles($file."/",$filterExt,$recursif,$what) ); } return $filesList; } } ?>
files::getFiles("/mon/dossier/");
Vous pouvez filtrer les résultats en passant un tableau en 2eme paramètre :
$ext=array(".jpg",".png"); files::getFiles("/mon/dossier/",$ext);
files::getFilesRecursive("/mon/dossier/");
Vous pouvez filtrer les résultats en passant un tableau en 2eme paramètre :
$ext=array(".jpg",".png"); files::getFilesRecursive("/mon/dossier/",$ext);
files::getFolders("/mon/dossier/");
Discussion
comment on fait pour afficher le résultat ?
Salut,
La classe te retourne un tableau.
Tu n'as plus qu'a le parcourir.
Exemple :
il faudrait aussi le mettre je crois ^^ pour les gens comme moi
merci ;)