Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führt man in PHP eine rekursive Ordnersuche nach bestimmten Dateien durch?

Wie führt man in PHP eine rekursive Ordnersuche nach bestimmten Dateien durch?

DDD
DDDOriginal
2024-11-11 09:19:02965Durchsuche

How to Perform Recursive Folder Scanning for Specific Files in PHP?

Glob: Rekursive Ordnersuche nach bestimmten Dateien

Sie haben einen Server mit mehreren Ordnern und Dateien und möchten einen erstellen Suchfunktion, die einen Download-Link für eine bestimmte Datei bereitstellt. Das aktuelle Skript sucht effektiv nach der Datei im Stammordner, aber Sie benötigen es auch, um tiefer in Unterordner zu scannen.

Rekursive Suche mit Glob

Ein Ansatz für Um eine rekursive Suche zu erreichen, verwenden Sie die Funktion glob() mit einer benutzerdefinierten rekursiven Suchfunktion. rglob:

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

Beispielverwendung:

$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip'); // To find "test.zip" recursively
$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/*test.zip'); // To find all files ending with "test.zip"

Alternative: RecursiveDirectoryIterator

Eine weitere Option ist die Verwendung RecursiveDirectoryIterator:

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

Beispielverwendung:

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

Sowohl RecursiveDirectoryIterator als auch Glob können die rekursive Suchaufgabe ausführen, und die Wahl zwischen ihnen hängt von Ihrer PHP-Version ab und Präferenz.

Das obige ist der detaillierte Inhalt vonWie führt man in PHP eine rekursive Ordnersuche nach bestimmten Dateien durch?. 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