Analyse de plusieurs sous-dossiers en PHP avec glob
En PHP, la fonction glob peut être utilisée pour rechercher des fichiers dans un répertoire spécifié. Cependant, lors d'une recherche dans plusieurs sous-répertoires et sous-sous-répertoires, des considérations supplémentaires sont nécessaires.
Recherche récursive avec glob
Une approche consiste à utiliser les capacités récursives de glob. Voici une fonction qui effectue une recherche récursive du modèle de fichier spécifié :
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; }
Pour utiliser cette fonction, fournissez simplement le répertoire racine et le modèle de fichier comme arguments :
$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip'); var_dump($result);
Approche alternative avec RecursiveDirectoryIterator
Une autre option consiste à utiliser RecursiveDirectoryIterator classe. Voici une fonction qui exploite cette classe pour rechercher de manière récursive le modèle de fichier spécifié :
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; }
Pour appeler cette fonction :
$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/')); var_dump($result);
Glob et RecursiveDirectoryIterator fournissent des solutions viables pour la recherche récursive de fichiers dans plusieurs sous-répertoires. Le choix entre eux dépend des besoins spécifiques de votre application.
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!