Maison  >  Article  >  développement back-end  >  Comment puis-je utiliser glob pour rechercher un fichier spécifique dans des sous-dossiers ?

Comment puis-je utiliser glob pour rechercher un fichier spécifique dans des sous-dossiers ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 10:18:03223parcourir

How Can I Use glob to Search for a Specific File in Subfolders?

php glob : Explorer les sous-dossiers pour un fichier spécifique

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn