„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie scanne ich mehrere Unterordner nach Dateien in PHP?

Wie scanne ich mehrere Unterordner nach Dateien in PHP?

Veröffentlicht am 09.11.2024
Durchsuche:389

How to Scan Multiple Subfolders for Files in PHP?

Scannen mehrerer Unterordner in PHP mit glob

In PHP kann die Glob-Funktion verwendet werden, um nach Dateien in einem bestimmten Verzeichnis zu suchen. Bei der Suche über mehrere Unterverzeichnisse und Unterverzeichnisse hinweg sind jedoch zusätzliche Überlegungen erforderlich.

Rekursive Suche mit glob

Ein Ansatz besteht darin, die rekursiven Fähigkeiten von glob zu nutzen. Hier ist eine Funktion, die eine rekursive Suche nach dem angegebenen Dateimuster durchführt:

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

Um diese Funktion zu verwenden, geben Sie einfach das Stammverzeichnis und das Dateimuster als Argumente an:

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

Alternativer Ansatz mit RecursiveDirectoryIterator

Eine weitere Option ist die Verwendung der RecursiveDirectoryIterator-Klasse. Hier ist eine Funktion, die diese Klasse nutzt, um rekursiv nach dem angegebenen Dateimuster zu suchen:

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

So rufen Sie diese Funktion auf:

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

Sowohl glob als auch RecursiveDirectoryIterator bieten praktikable Lösungen für die rekursive Suche nach Dateien in mehreren Unterverzeichnissen. Die Wahl zwischen ihnen hängt von den spezifischen Anforderungen Ihrer Anwendung ab.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3