Das Durchsuchen einer großen Anzahl von Dateien, die über verschiedene Ordner und Unterordner verstreut sind, kann eine entmutigende Aufgabe sein. Die Glob-Funktion von PHP bietet jedoch eine vielseitige Lösung, um dieser Herausforderung zu begegnen.
Ihr erster Versuch bestand darin, Glob für die Suche im Stammverzeichnis zu verwenden. Um die Reichweite über die Wurzel hinaus auszudehnen, sollten Sie die folgenden zwei Ansätze in Betracht ziehen:
1. Rekursiver Glob mit rglob-Funktion:
Die rglob-Funktion erweitert die Fähigkeiten von glob, indem sie rekursive Suchvorgänge ermöglicht. Es geht rekursiv in Unterverzeichnisse vor und gibt alle passenden Dateien zurück. Zum Beispiel:
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. Rekursiver Verzeichnis-Iterator:
Die Klasse RecursiveDirectoryIterator ist eine weitere Option für die rekursive Dateisuche. Es bietet einen flexibleren und objektorientierten Ansatz:
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);
Beide Ansätze können Unterordner effektiv nach der angegebenen Datei durchsuchen. Wählen Sie diejenige aus, die den Anforderungen und Vorlieben Ihres Projekts am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie kann ich mit glob nach einer bestimmten Datei in Unterordnern suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!