Форум программистов, компьютерный форум, киберфорум
Наши страницы
long399
Войти
Регистрация
Восстановить пароль
По возможности буду размещать интересные записи в своем блоге
Оценить эту запись

Рекурсивный обход каталога в PHP

Запись от long399 размещена 09.01.2020 в 11:51

Недавно на работе возникла необходимость получения содержимого определенного каталога, назовем его dir. Это подразумевает также и рекурсивное получение содержимого всех каталогов, находящихся внутри каталога dir, например dir/dir1, dir/dir2 и т.д.

Не хотелось реализовывать это стандартными средствами ( opendir(), readdir(), closedir() ) и писать рекурсивную функцию обхода дерева каталогов, поэтому полез в интернет в поисках более простого и короткого решения.

Наткнулся на код, реализованный с использованием рекурсивных итераторов. Используются два класса: RecursiveIteratorIterator и RecursiveDirectoryIterator.
  1. RecursiveIteratorIterator - класс, который может быть использован для перебора рекурсивных итераторов.
  2. RecursiveDirectoryIterator - класс, предоставляющий интерфейс для рекурсивного перебора каталогов файловой системы.

Немного переделал код под свои нужды, но основную идею обхода (и вывода) дерева каталогов привожу ниже, возможно когда-то, кому-то и пригодится.

PHP
1
2
3
4
5
6
7
8
$dir = "D:\\somedir";
        
$rdir = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir), TRUE);
 
foreach ($rdir as $file)
{
    echo str_repeat('-- ', $rdir->getDepth()) . $file . PHP_EOL;
}
Миниатюры
Нажмите на изображение для увеличения
Название: tree.png
Просмотров: 438
Размер:	53.0 Кб
ID:	5806  
Размещено в PHP
Просмотров 65 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.