Mehrere Unterordner in PHP mit Glob scannen
In PHP kann die Glob-Funktion verwendet werden, um nach Dateien in einem bestimmten Verzeichnis zu suchen. Bei der Suche über mehrere Unterverzeichnisse und Unterunterverzeichnisse 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 Möglichkeit ist die Verwendung der Klasse RecursiveDirectoryIterator. 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 Dateien in mehreren Unterverzeichnissen. Die Wahl zwischen ihnen hängt von den spezifischen Anforderungen Ihrer Anwendung ab.
Das obige ist der detaillierte Inhalt vonWie scanne ich mehrere Unterordner nach Dateien in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!