Heim > Artikel > Backend-Entwicklung > Wie finde ich Dateien in Unterordnern mit 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!