Maison > Article > développement back-end > Comment puis-je utiliser glob pour rechercher un fichier spécifique dans des sous-dossiers ?
La recherche dans une vaste gamme de fichiers dispersés dans différents dossiers et sous-dossiers peut être une tâche ardue. Cependant, la fonction glob de PHP fournit une solution polyvalente pour relever ce défi.
Votre tentative initiale impliquait d'utiliser glob pour effectuer une recherche dans le répertoire racine. Pour étendre sa portée au-delà de la racine, envisagez les deux approches suivantes :
1. Globe récursif avec fonction rglob :
La fonction rglob améliore les capacités de glob en permettant des recherches récursives. Il descend récursivement dans les sous-répertoires, renvoyant tous les fichiers correspondants. Par exemple :
function rglob($pattern, $flags = 0) { $files = glob($pattern, $flags); foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) { $files = array_merge([], ...[$files, rglob($dir . "/". basename($pattern), $flags)]); } return $files; } $result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip'); var_dump($result);
2. Itérateur de répertoire récursif :
La classe RecursiveDirectoryIterator est une autre option pour la recherche de fichiers récursive. Il offre une approche plus flexible et orientée objet :
function rsearch($folder, $regPattern) { $dir = new RecursiveDirectoryIterator($folder); $ite = new RecursiveIteratorIterator($dir); $files = new RegexIterator($ite, $regPattern, RegexIterator::GET_MATCH); $fileList = array(); foreach($files as $file) { $fileList = array_merge($fileList, $file); } return $fileList; } $result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/'); var_dump($result);
Les deux approches peuvent analyser efficacement les sous-dossiers du fichier spécifié. Choisissez celui qui correspond le mieux aux exigences et aux préférences de votre projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!