Heim > Artikel > Backend-Entwicklung > Wie kann man mit PHP rekursiv nach Dateien in Unterordnern suchen: Glob vs. RecursiveDirectoryIterator?
Beim Durchsuchen eines Servers nach Dateien besteht häufig die Notwendigkeit, die Suche über den Stammordner hinaus auf Unterordner auszudehnen Unterunterordner. So erreichen Sie dies mit der glob-Funktion von PHP und RecursiveDirectoryIterator.
Glob bietet eine eingeschränkte Form der rekursiven Suche mit der glob()-Funktion. Es fehlt jedoch die Unterstützung für bestimmte Optionen wie GLOB_BRACE. Um dies zu umgehen, können Sie eine benutzerdefinierte Funktion rglob() verwenden, die die Verzeichnisstruktur rekursiv durchläuft und ein zusammengeführtes Array übereinstimmender Dateien zurückgibt:
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; }
Eine weitere Option für die rekursive Suche ist die RecursiveDirectoryIterator-Klasse. Es bietet einen robusteren und erweiterbareren Ansatz:
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; }
Sowohl rglob() als auch rsearch() können rekursive Dateisuchen durchführen. RecursiveDirectoryIterator bietet durch seine Erweiterbarkeitsoptionen zusätzliche Flexibilität. Die Wahl zwischen beiden hängt von Ihren spezifischen Anforderungen und dem gewünschten Maß an Kontrolle ab.
Das obige ist der detaillierte Inhalt vonWie kann man mit PHP rekursiv nach Dateien in Unterordnern suchen: Glob vs. RecursiveDirectoryIterator?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!