Heim  >  Artikel  >  Backend-Entwicklung  >  Wie finde ich Dateien in Unterordnern mit PHP: „glob()“ vs. „RecursiveDirectoryIterator“?

Wie finde ich Dateien in Unterordnern mit PHP: „glob()“ vs. „RecursiveDirectoryIterator“?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 21:07:02464Durchsuche

How to Find Files in Subfolders with PHP: `glob()` vs. `RecursiveDirectoryIterator`?

So suchen Sie mit PHP glob() nach Dateien in Unterordnern

So suchen Sie mit der glob()-Funktion von PHP nach Dateien in Unterordnern die folgenden Ansätze:

Rekursive Suche mit glob()

Verwenden Sie die Funktion glob() mit rekursiver Durchquerung:

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;
}

Beispiel:

$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip');

Rekursive Iteration mit RecursiveDirectoryIterator

Alternativ können Sie RecursiveDirectoryIterator mit regulärem Ausdrucksabgleich verwenden:

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;
}

Beispiel:

$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/');

Beachten Sie, dass RecursiveDirectoryIterator verfügbar ist in PHP5, während glob() seitdem vorhanden ist PHP4. Beide Methoden suchen effektiv nach Dateien in Unterverzeichnissen.

Das obige ist der detaillierte Inhalt vonWie finde ich Dateien in Unterordnern mit PHP: „glob()“ vs. „RecursiveDirectoryIterator“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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