Maison >développement back-end >tutoriel php >Comment analyser plusieurs sous-dossiers à la recherche de fichiers en PHP ?

Comment analyser plusieurs sous-dossiers à la recherche de fichiers en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-08 17:59:01856parcourir

How to Scan Multiple Subfolders for Files in PHP?

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!

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