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

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

07.11.2016, обновлено 08.03.2021
16783
Предыдущая запись Вычисление процентов в PHP
Следующая запись Вывод списка по алфавиту

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

Лёша Рубцов Лёша Рубцов
22 апреля 2021 в 09:27
0
То же самое, но с чёрным списком.
// Очистка директории
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);
}
Пример использования (обновление сайта на .ru домене):
$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

Спасибо автору

, чтобы добавить комментарий.

Другие публикации

Выпадающий список с файлами на хостинге
Примеры как сделать select для выбора загруженных файлов. Из PHP-функций для работы с файловой системой – opendir(),...
2839
+1
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
9341
0
Синхронизация файлов между сайтами
Такой вопрос возникает когда у сайта есть копия, например региональный сайт или сайт на другом языке, но при этом база...
1878
+1
Работа с именами файлов в PHP
Набор PHP функций для работы с путями и именами файлов.
1485
+2
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
5771
+1
ZIP в PHP (ZipArchive)
Класс ZipArchive позволяет быстро и удобно работать с ZIP-архивам, рассмотрим основные возможности класса.
9413
+4