La fonction glob est utilisée dans de nombreux langages, elle sert à lister tous les fichiers (et répertoires) qui vérifient un masque.
La petite fonction qui suit sert à rechercher tous les fichiers qui vérifient un masque dans une arborescence.
<?php /** * Recursive glob * @param string $pattern Masque à vérifier * @param string $path Répertoire initial * @param integer $flags Drapeaux * @return array list of files */ function rglob($pattern='*', $path='', $flags = 0) { $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT); $files=glob($path.$pattern, $flags); foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $path, $flags)); } return $files; } ?>
Les drapeaux sont ceux utilisés par la fonction glob:
- GLOB_MARK : Ajoute un slash final à chaque dossier retourné
- GLOB_NOSORT : Retourne les fichiers tant l'ordre d'apparence (pas de tri)
- GLOB_NOCHECK : Retourne le masque de recherche si aucun fichier n'a été trouvé
- GLOB_NOESCAPE : Ne protège aucun métacaractère d'un antislash
- GLOB_BRACE : Remplace {a,b,c} par 'a', 'b' ou 'c'
- GLOB_ONLYDIR : Ne retourne que les dossiers qui vérifient le masque
- GLOB_ERR : Stop lors d'une erreur (comme des dossiers non lisibles), par défaut, les erreurs sont ignorées.