Php массив файлов папке

Список файлов в папке (PHP)

В PHP пятой версии есть отличная функция scandir, которая возвращает массив файлов и директорий в определенной директории. В качестве параметра принимает имя директории.

Список файлов и директорий

scandir принимает 2 параметра: string directory — имя директории (обязательный), integer sorting_order — необязательный параметр сортировки (два возможных значения: 0 — в алфавитном порядке по возрастанию; 1 — по убыванию).

Улучшаем scandir

Напишем свою функцию myscandir , которая идентична scandir за исключением того, что удаляются . и .. , которые, как мне кажется, редко используются.

myscandir

Примечание

Для работы этой функции нужна 5ятая версия PHP.

Категории

Читайте также

  • Как очистить папку (PHP)
  • Как проверить права доступа (PHP)
  • Массив в JSON (PHP)
  • Как скопировать файл (PHP)
  • Как дописать в конец файла (PHP)
  • Дата изменения файла (PHP)
  • Как создать файл (PHP)
  • Как очистить файл не удаляя его (PHP)
  • Singleton Trait (PHP)
  • Редирект (PHP)
  • Склонение числительных на PHP
  • Как проверить есть ли событие (jQuery)

Комментарии

мне казалось легче использовать array_pop(): или array_shift(); — в зависимости от расположения точек

Вход на сайт

Введите данные указанные при регистрации:

Социальные сети

Вы можете быстро войти через социальные сети:

Читайте также:  Коды html пример заполнения

Источник

scandir

Возвращает array , содержащий имена файлов и каталогов, расположенных по пути, переданном в параметре directory .

Список параметров

По умолчанию, сортировка производится в алфавитном порядке по возрастанию. Если необязательный параметр sorting_order установлен в значение SCANDIR_SORT_DESCENDING , сортировка производится в алфавитном порядке по убыванию. Если же он установлен в значение SCANDIR_SORT_NONE , то сортировка не производится.

За описанием параметра context обратитесь к разделу «Потоки» данного руководства.

Возвращаемые значения

Возвращает array имен файлов в случае успеха или FALSE в случае ошибки. Если directory не является каталогом, возвращается FALSE и генерируется сообщение об ошибке уровня E_WARNING .

Список изменений

Версия Описание
5.4.0 Были добавлены sorting_order константы. Любое ненулевое значение задавало сортировку по убыванию в предыдущих версиях. Поэтому для всех версий PHP нужно использовать 0 для сортировки по возрастанию и 1 для сортировки по убыванию. Опции для режима SCANDIR_SORT_NONE не существовало до PHP 5.4.0.

Примеры

Пример #1 Простой пример использования функции scandir()

$dir = ‘/tmp’ ;
$files1 = scandir ( $dir );
$files2 = scandir ( $dir , 1 );

print_r ( $files1 );
print_r ( $files2 );
?>

Результатом выполнения данного примера будет что-то подобное:

Array ( [0] => . [1] => .. [2] => bar.php [3] => foo.txt [4] => somedir ) Array ( [0] => somedir [1] => foo.txt [2] => bar.php [3] => .. [4] => . )

Пример #2 Альтернативный вариант функции scandir() для PHP 4

$dir = «/tmp» ;
$dh = opendir ( $dir );
while ( false !== ( $filename = readdir ( $dh ))) $files [] = $filename ;
>

Результатом выполнения данного примера будет что-то подобное:

Array ( [0] => . [1] => .. [2] => bar.php [3] => foo.txt [4] => somedir ) Array ( [0] => somedir [1] => foo.txt [2] => bar.php [3] => .. [4] => . )

Примечания

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen() . Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).

Смотрите также

  • opendir() — Открывает дескриптор каталога
  • readdir() — Получает элемент каталога по его дескриптору
  • glob() — Находит файловые пути, совпадающие с шаблоном
  • is_dir() — Определяет, является ли имя файла директорией
  • sort() — Сортирует массив

Источник

Работа с директориями в PHP

Набор PHP функций для работы с директориями, получение списка файлов в папке, копирование и удаление содержимого папок.

Создать директорию

$dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; if (!is_dir($dir))

Получить список файлов директории в виде массива

То же самое делает функция scandir() , разница в том что у нее в массиве будут « . », « .. » и есть возможность сортировки.

function list_files($path) < if ($path[mb_strlen($path) - 1] != '/') < $path .= '/'; >$files = array(); $dh = opendir($path); while (false !== ($file = readdir($dh))) < if ($file != '.' && $file != '..' && !is_dir($path.$file) && $file[0] != '.') < $files[] = $file; >> closedir($dh); return $files; > print_r(list_files(__DIR__));

Результат:

Array ( [0] => favicon.ico [1] => index.php [2] => image.jpg [3] => robots.txt )

Удаление директории

Функция rmdir($dir) — удаляет заданную директорию только при условии, если она пуста.

$dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; rmdir($dir);

Удалить директорию со всем содержимым

function remove_dir($dir) < if ($objs = glob($dir . '/*')) < foreach($objs as $obj) < is_dir($obj) ? remove_dir($obj) : unlink($obj); >> rmdir($dir); > $dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; remove_dir($dir);

Удалить только содержимое директории

function clear_dir($dir, $rmdir = false) < if ($objs = glob($dir . '/*')) < foreach($objs as $obj) < is_dir($obj) ? clear_dir($obj, true) : unlink($obj); >> if ($rmdir) < rmdir($dir); >> $dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; clear_dir($dir);

Удалить файлы из директории, кроме некоторых

Например, нужно удалить все файлы, кроме файла .htaccess:

$dir = __DIR__ . '/cache'; $leave = array('index.html', '.htaccess'); foreach (glob($dir . '/*') as $file)

Копирование директории с ее содержимым

function copy_dir($src, $drc) < $dir = opendir($src); if (!is_dir($drc)) < mkdir($drc, 0777, true); >while (false !== ($file = readdir($dir))) < if ($file != '.' && $file != '..') < if (is_dir($src . '/' . $file)) < copy_dir($src . '/' . $file, $drc . '/' . $file); >else < copy($src . '/' . $file, $drc . '/' . $file); >> > closedir($dir); >

Комментарии 2

// Очистка директории
function dir_clear ($dir, $blacklist = []) function dir_clear_run($dir, $blacklist, $super_dir) $objs = glob($dir . '/*');
if (!$objs)
return;
foreach ($objs as $obj) // Проверка на наличие файла в чёрном списке
if (in_array(str_replace("$super_dir/", '', $obj), $blacklist))
continue;
// Удаление объекта
if (is_dir($obj)) dir_clear_run($obj, $blacklist, $super_dir);
rmdir($obj);
> else
unlink($obj);
>
>
dir_clear_run($dir, $blacklist, $dir);
>
// Создание каталога $drc и помещение в него копии содержимого каталога $src
function dir_copy($src, $drc, $blacklist = []) function dir_copy_run($src, $drc, $blacklist, $super_dir) $dir = opendir($src);
if (!is_dir($drc))
mkdir($drc, 0777, true);
while (true) $file = readdir($dir);
if ($file === false)
break;
if ($file == '.' || $file == '..')
continue;
// Проверка на наличие файла в чёрном списке
if (in_array(str_replace("$super_dir/", '', "$src/$file"), $blacklist))
continue;
if (is_dir("$src/$file"))
dir_copy_run("$src/$file", "$drc/$file", $blacklist, $super_dir);
else
copy("$src/$file", "$drc/$file");
>
closedir($dir);
>
dir_copy_run($src, $drc, $blacklist, $src);
>
$online = '/home/a/admin/apolshop.online/public_html';
$ru = '/home/a/admin/apolshop.ru/public_html';
// Проверка происходит относительно переданной директории в первом аргументе
// Значит можно указывать подпапки, например: 'products/resources/imgs'
$blacklist = [
'.htaccess',
'cgi-bin',
'imgs',
'service',
'test',
'staticValues.php'
];
dir_clear($ru, $blacklist); // Очистка .ru
dir_copy($online, $ru, $blacklist); // Копирование из .online в .ru
$fileList = array_diff( scandir( $dir ), array( '..', '.' ) );

Источник

Оцените статью