Как рекурсивно перебрать файлы на php?
Рекурсивный обход каталога с помошью RecursiveDirectoryIterator
Для рекурсивного обхода файловой системы можно использовать RecursiveDirectoryIterator:
$path = $_SERVER['DOCUMENT_ROOT'];
$directory = new \RecursiveDirectoryIterator($path);
$iterator = new \RecursiveIteratorIterator($directory);
$files = array();
$bad = 0;
$ok = 0;
foreach ($iterator as $info) {
echo $info->getPathname()."
";
}
Рекурсивный вывод спомошью opendir() и readdir()
function printTree($level=1) {
// Открываем каталог и выходим в случае ошибки.
$d = @opendir(".");
if (!$d) return;
while (($e=readdir($d)) !== false) {
// Игнорируем элементы .. и .
if ($e=='.' || $e=='..') continue;
// выводим файл.
if (!@is_dir($e)) {
echo "$e\n";
continue;
}
// Печатаем пробелы, чтобы сместить вывод.
for ($i=0; $i<$level; $i++) echo " ";
// Выводим текущий элемент.
echo "$e\n";
// Входим в текущий подкаталог и печатаем его
if (!chdir($e)) continue;
printTree($level+1);
// Возвращаемся назад
chdir("..");
// Отправляем данные в браузер, чтобы избежать видимости зависания
// для больших распечаток.
flush();
}
closedir($d);
}
$path = $_SERVER['DOCUMENT_ROOT'];
echo "<pre>";
echo "/\n";
chdir($path);
PrintTree();
echo "</pre>";