Maison > Article > développement back-end > Comment rechercher des fichiers dans des sous-dossiers avec PHP : `glob()` vs `RecursiveDirectoryIterator` ?
Comment rechercher des fichiers dans des sous-dossiers à l'aide de PHP glob()
Pour rechercher des fichiers dans des sous-dossiers à l'aide de la fonction glob() de PHP, pensez les approches suivantes :
Recherche récursive avec glob()
Utiliser la fonction glob() avec parcours récursif :
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; }
Exemple :
$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip');
Itération récursive avec RecursiveDirectoryIterator
Vous pouvez également utiliser RecursiveDirectoryIterator avec une correspondance d'expression régulière :
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; }
Exemple :
$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/');
Notez que RecursiveDirectoryIterator est disponible en PHP5, tandis que glob() est présent depuis PHP4. Les deux méthodes recherchent efficacement des fichiers dans des sous-répertoires.
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!