"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je utiliser Glob pour rechercher un fichier spécifique dans les sous-dossiers?

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

Publié le 2025-03-13
Parcourir:295

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

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

recherchant un vaste tableau de fichiers diffusés sur différents dossiers et sous-dossiers peut être une tâche intimidante. Cependant, la fonction GLOB de PHP fournit une solution polyvalente pour relever ce défi.

Votre première tentative impliquée en utilisant Glob pour rechercher dans le répertoire racine. Pour étendre sa portée au-delà de la racine, considérez les deux approches suivantes:

1. Glob récursif avec la fonction RGLOB:

La fonction RGLOB améliore les capacités de Glob en activant les recherches récursives. Il descend récursivement en 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. Répertoire récursif Iterator:

La classe RecursiveDirectoryiterator est une autre option pour la recherche de fichiers récursive. Il fournit 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 pour le fichier spécifié. Choisissez celui qui convient le mieux aux exigences et aux préférences de votre projet.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3