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
Libérer: 2024-11-08 17:59:01
original
884 Les gens l'ont consulté

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;
}
Copier après la connexion

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);
Copier après la connexion

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;
}
Copier après la connexion

Pour appeler cette fonction :

$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/'));
var_dump($result);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal