Articles avec le tag ‘search’

Rechercher des fichiers depuis PHP avec un masque

Ce matin, j’ai eu besoin d’un fonction permettant de rechercher des fichiers d’après un masque (tel que ‘*.txt’) dans un dossier.

Malheureusement, je n’ai pas trouvé mon bonheur parmi les fonctions PHP, même si PHP5 apporte des fonctions interessantes, telle que scandir().

Après avoir achevé d’écrire une petite fonction permettant de trouver les fichiers correspondant à un masque de recherche, j’ai décidé de la partager.

Note: cette fonction requiert PHP5 ou ultérieur, car elle utilise les fonctions scandir() et fnmatch(). Enfin, notez également que cette fonction retourne le contenu filtré du répertoire, quel que soit ce contenu: fichier, lien, dossier..

Bonus: par défaut, cette fonction intègre un système de cache. Lorsque vous scannez le répertoire, le résultat est mis en cache. Ainsi, dès le deuxième appel à la fonction pour le même répertoire, il n’est pas rescanné. Pour dévalider la mise en cache, le troisième paramètre doit être mis à 1.

function searchdir( $path='.', $mask='*', $nocache=0 ){
 static $dir = array();
 if ( !isset($dir[$path]) || $nocache) {
 $dir[$path] = scandir($path);
 }
 foreach ($dir[$path] as $i=>$entry) {
 if ($entry!='.' && $entry!='..' && fnmatch($mask, $entry) ) {
 $sdir[] = $entry;
 }
 }
 if ($nocache)
 unset($dir);
 return ($sdir);
}

Avez-vous trouvé cette fonction utile? Des améliorations à suggérer? Postez un commentaire pour me le dire!