Verzeichnis auslesen
Iteratoren sind der empfohlene Weg, das Dateisystem zu durchlaufen. Die folgenden Beispiele nutzten SPL-Klassen, die in PHP 5.3 hinzugefügt wurden.
Verzeichnis auslesen
$dir = __DIR__;
$iterator = new DirectoryIterator($dir);
foreach ($iterator as $file) {
if (!$file->isFile()) {
continue;
}
echo $file->getPathname() . "\n";
}
Alternativ könnte man hier für einfache Durchläufe auch glob()
(Doku) verwenden.
Verzeichnis rekursiv auslesen
$dir = __DIR__;
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir)
);
foreach ($iterator as $file) {
if (!$file->isFile()) {
continue;
}
echo $file->getPathname() . "\n";
}
Verzeichnis rekursiv auslesen - mit Filter
Will man bsp. nur auf spezielle Dateiendung(en) “filtern”, könnte man den RegexIterator verwenden.
Beispiel wie oben, um den RegexIterator erweitert. Der Filter wird durch ein Regex-Pattern festgelegt.
$dir = __DIR__;
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir)
);
$php_files = new RegexIterator($iterator, '/\.php$/'); // Dateiendung ".php"
foreach ($php_files as $file) {
if (!$file->isFile()) {
continue;
}
echo $file->getPathname() . "\n";
}
Anmerkungen
Es gibt noch andere Wege zB readdir()
, dir()
, etc. die jedoch seit Einführung
der Iteratoren mit PHP 5.3 für diesen Zweck keine Vorteile bringen.
Dieser Beitrag wird zur Zeit diskutiert und wurde zuletzt von hausl verändert.
Beiträge die zur Diskussion gestellt werden, enthalten mitunter Informationen bei denen wir uns noch bezüglich der finalen Darstellung absprechen müssen. Gedulde dich etwas, wir stellen diesen Beitrag fertig, sobald die Diskussion beendet ist.