Сканирование директории на PHP

Расскажу немного о том как можно быстро стандартными средствами языка программирования PHP сканировать директорию дабы узнать весь список файлов находящихся в ней.

Ниже представлены самые простые способы для наглядности. Если нужно, то их всегда можно доработать до полноценного скрипта решающего какие либо проблемы связанные со сканированием директорий. Итак начнём.

$PATH1 = "d:\Audio"; //директория которую будем сканировать
 
//Способ 1
 print_r(scandir($PATH1)); //просто выведет на экран массив в котором элементы будут являться файлами в каталоге
 
//Способ 2
 $descriptor = opendir($PATH1); //открываем дескриптор
 while($currentElement = readdir($descriptor)) { //в цикле читаем каждый следующий элемент в переменную и выводим её на экран оператором echo
 echo "{$currentElement}\n";
 }

//Способ 3 более прдвинутый
 function scan($dir,$counter) { //функция сканирует все файлы и каталоги
 if (!preg_match("/\.$/",$dir) && !preg_match("/\.\.$/",$dir)){ //если название директории не точка (текущая директория) и не две точки (выход на шаг вверх)
 if (is_file($dir)) { //если это файл
 echo "$counter file - $dir\n";
 } else { //если же это не файл, т.е. директория
 $d=opendir("$dir"); //открываем дескриптор каталога
 while(false != ($file = readdir($d))) {//получаем элемент каталога по его дискриптору, цикл длится до тех пор пока извлекаются элементы каталога теущего дескриптора
 scan("$dir/$file",$counter++); //в рекурсии вызываем эту функцию для текущего каталога и каждого элемента в нём
 }
 closedir($d); //освобождаем дескриптор текущего последнего каталога
 }
 }
 }
 $counter = 0; //инициализируем счётчик файлов
 scan($PATH1,$counter); //просто вызываем функцию

Как видите в коде так же присутствуют комментарии для большей наглядности и понятности. Думаю вопросов с этим кодом возникнуть не должно. На этом всё, спасибо за внимание.

Поделиться!
Tags: ,

49.7MB | MySQL:53 | 0,317sec