Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich mit glob nach einer bestimmten Datei in Unterordnern suchen?

Wie kann ich mit glob nach einer bestimmten Datei in Unterordnern suchen?

Barbara Streisand
Freigeben: 2024-11-07 10:18:03
Original
369 Leute haben es durchsucht

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

php glob: Unterordner nach einer bestimmten Datei durchsuchen

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage