PHP. Полезные скрипты (часть 3) - Web - Shelek
Сегодня я покажу, как получить список директорий в каком-то каталоге, а также как получить список файлов в определённом каталоге.

Итак, начнём с получения списка подкаталогов в определённом каталоге.
Функция получает один параметер, и это - путь к каталогу, список подкаталогов которого мы хотим узнать.
Функция использует рекурсию для получения подкаталогов любого уровня вложенности.
Код:
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\\";

В итоге получим список файлов в указаном каталоге, причём только тех, что в корне указанного каталога.
Information
  • Posted on 01.02.2010 01:14
  • Просмотры: 2600