Maison > développement back-end > tutoriel php > 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
Libérer: 2024-11-07 10:18:03
original
359 Les gens l'ont consulté

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

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

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!

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