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Автор: МОРОЗ