Статья
Версия для печати
Обсудить на форуме
PHP. Полезные скрипты (часть 3)

Сегодня я покажу, как получить список директорий в каком-то каталоге, а также как получить список файлов в определённом каталоге.

Итак, начнём с получения списка подкаталогов в определённом каталоге.
Функция получает один параметер, и это - путь к каталогу, список подкаталогов которого мы хотим узнать.
Функция использует рекурсию для получения подкаталогов любого уровня вложенности.
Код:
function get_directory_list($path)
{
   if(is_dir($path)){
       $dh = opendir($path);
       while (false !== ($dir = readdir($dh))) {
           if (is_dir($path . $dir) && $dir !== '.' && $dir !== '..') {
               $subdir = $path . $dir . '/';
               print $subdir . "\n";
               get_directory_list($subdir);
           } else {
               next;
           }
       }
       closedir($dh);
   } else {
       print "Директорий не найдено";
   }
}

Пример использования:
Код:
$path = "/usr/home/www/";
get_directory_list($path);

Если функция запускается в Windows, то надо кое-что изменить:
Указывая путь, обязательно нужно использовать двойные слэши, как это показано ниже.
Код:
$path = "C:\\wamp\\www\\";
Также в самой функции заменить строку
$subdir = $path . $dir . '/';
на
$subdir = $path . $dir . '\';

В результате на экране получим список всех подкаталогов указаной директории.

Получаем список файлов в конкретном каталоге без захода в субкаталоги.
Функция принимает один параметер - путь к каталогу, список файлов которого нам нужно получить.
Код:
function list_directory($dir)
{
   $file_list = '';
   if ($dh = opendir($dir))
   {
      while (($file = readdir($dh)) !== false)
      {
          if ($file !== '.' AND $file !== '..')
          {
             $current_file = "{$dir}/{$file}";
             if (is_file($current_file))
             {
                print "{$file}[b]";
             }
          }
       }
   }
}

Пример использования:
Код:
$path = "/usr/home/www/";   
list_directory($path);

Если функция запускается в Windows, то надо кое-что изменить:
Указывая путь, обязательно нужно использовать двойные слэши, как это показано ниже.
Код:
$path = "C:\\wamp\\www\\";

В итоге получим список файлов в указаном каталоге, причём только тех, что в корне указанного каталога.

P.S. Все Ваши замечания и пожелания прошу высказывать в нашем форуме. Вот по этой ссылке: https://forum.shelek.ru/index.php/topic,6082.0.html

Автор: МОРОЗ
Версия для печати
Обсудить на форуме