Блог → Рекурсивный обход файлов

Хочу поделиться небольшой функцией для рекурсивного обхода файлов в каталогах.

function get_files($dir = "."){
     $files = array();	
     if ($handle = opendir($dir)) {		
          while (false !== ($item = readdir($handle))) {		
               if (is_file("$dir/$item")) {
                    $files[] = "$dir/$item";
               }		
               elseif (is_dir("$dir/$item") && ($item != ".") && ($item != "..")){
                    $files = array_merge($files, get_files("$dir/$item"));
               }
          }	
          closedir($handle);
     }	
     return $files; 
}

В качестве параметра можно указать каталог, начиная с которого будет производиться обход файлов. Если параметр опущен, обход будет идти с каталога из которого запущен скрипт. Функция возвращает массив файлов, с указанием полного пути.


Комментарии (4)

ildar
Большое спасибо! Очень помогло в понимании "как сделать чтобы.." )
Ответить
student
Спасибо !
Ответить
evg
благодарю..! про / то я забыыыллл...
Ответить
metoo
этот алгоритм пропустит файлы, содержащие в названии символы, отсутствующие в ASCII (они не удовлетворят условию is_file("$dir/$item"))
Ответить


Оставить свой комментарий


Представтесь, пожалуйста *

Ваш комментарий

Число на картинке *

captcha

На хостинг