Php очистить содержимое папки

Содержание
  1. Php очистить содержимое папки
  2. Синтаксис функции для удаления папки в php:
  3. Разберем приведенный синтаксис.
  4. Упрощенный синтаксис функции для удаления папки в php:
  5. Пример использования функции для удаления папки
  6. Удалить папки php
  7. Удаляем папки внутри папки.
  8. php удалить папку со всем содержимым
  9. Работа с директориями в PHP
  10. Создать директорию
  11. Получить список файлов директории в виде массива
  12. Результат:
  13. Удаление директории
  14. Удалить директорию со всем содержимым
  15. Удалить только содержимое директории
  16. Удалить файлы из директории, кроме некоторых
  17. Копирование директории с ее содержимым
  18. Комментарии 2
  19. Удалить все файлы из каталога в PHP
  20. 1. Использование glob() функция
  21. 2. Использование RecursiveDirectoryIterator class
  22. 3. Использование DirectoryIterator class
  23. PHP: Удаление директории
  24. Удаление только содержимого директории
  25. Удалить файлы из директории, кроме некоторых

Php очистить содержимое папки

В php есть отдельная функция, которая удаляет директорию(папку), поэтому . давайте начнем с синтаксиса :

Синтаксис функции для удаления папки в php:

bool rmdir ( string dirname [, resource context] )

Разберем приведенный синтаксис.

возвращаемое значение — bool(true>false)

dirname — название папки или путь до папки()рекомендую использовать путь_до_папки_на_сервере

resource context — посмотрите в интернете.

Упрощенный синтаксис функции для удаления папки в php:

И есть НО ! Данная функция удаляет папку только в том случае, когда папку пустая и есть соответствующие права доступа.

Пример использования функции для удаления папки

Рекомендую использовать функцию для удаления папки вот в такой связке.

Где is_dir — проверяет — существует ли данная папка по указанному пути «path»(как я уже говорил ранее — рекомендую использовать путь на сервере до файла).

Для чего нужна такая конструкция — если вы напишите вот так:

Если папка существует — папка будет удалена.

Если папка не существует вернет ошибку типа E_WARNING

Удалить папки php

Давайте немного подумаем над формулировкой:

В данной строке . непонятно. будем ли удалять саму папку . или же очищенная папка останется?

Поэтому. первая функция это:

Удаляем папки внутри папки.

Т.е. по другому можно сказать, что мы очистим папку отт других папок, а очищенная папка останется на сервер.

// модифицированная функция scandir с удалением виртуальных директорий

Указанная очищаемая папка удалена не будет. Все папки и файлы, которые внутри будут удаленны.

php удалить папку со всем содержимым

Далее рассмотрим код, который удалит все папки и файлы и саму папку указанную в $dir.

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

Поскольку после удаления папки . папка существовать не будет и после перезагрузки повыскакивают «E_WARNING», то нужна проверка :

+ Проверим на пустоту саму очищаемую папку. после того, как она окажется пустой. удаляем и эту папку.

Источник

Работа с директориями в 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( '..', '.' ) );

Источник

Удалить все файлы из каталога в PHP

В этой статье показано, как удалить все файлы из каталога в PHP.

1. Использование glob() функция

Стандартным решением для удаления файла из файловой системы является использование команды unlink() функция. Идея состоит в том, чтобы получить все файлы в папке с помощью glob() функции и удалить их с помощью unlink() функция. glob() Функция возвращает массив, содержащий имена путей, соответствующие указанному шаблону, и вы можете отфильтровать обычные файлы, используя is_file() функция.

В приведенном выше примере удаляются все файлы, находящиеся в каталоге. Однако при этом удаляются только файлы в корневом каталоге, а файлы в подкаталогах остаются нетронутыми. Вы можете расширить решение для рекурсивного удаления каталога следующим образом: is_dir() чтобы проверить, является ли текущий путь каталогом или нет.

Стоит отметить, что glob(‘*’) игнорирует скрытые файлы. Если вы хотите также удалить скрытые файлы, вы можете использовать ‘*’ узор с GLOB_BRACE флаг.

2. Использование RecursiveDirectoryIterator class

Другой вариант рекурсивного удаления каталога — использовать команду RecursiveDirectoryIterator class, который предоставляет интерфейс для рекурсивного обхода каталогов файловой системы. Например, следующий код удаляет все файлы и подкаталоги в каталоге, но не сам корневой каталог.

Следует отметить, что поведение удаления можно легко контролировать с помощью флагов. В приведенном выше примере используется FilesystemIterator::SKIP_DOTS а также RecursiveIteratorIterator::CHILD_FIRST который пропускает точечные файлы и обрабатывает дочерние элементы перед родительскими в порядке итерации.

3. Использование DirectoryIterator class

Если вам не нужен рекурсивный итератор, вы можете использовать легкий SplFileInfo iterator DirectoryIterator чтобы просмотреть содержимое каталогов файловой системы. Его можно использовать следующим образом, чтобы удалить все файлы из каталога. С DirectoryIterator является нерекурсивным итератором, он не удаляет файлы, находящиеся ни в одном из подкаталогов.

Источник

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

Данная функция рекурсивно удалит саму директорию и её содержимое:

function removeDirectory(string $dir): void < if (is_dir($dir)): chmod($dir, 0777); if ($elements = glob($dir . "/*")): foreach($elements as $element): is_dir($element) ? removeDirectory($element) : unlink($element); endforeach; endif; rmdir($dir); endif; >$dir = __DIR__ . '/dir'; removeDirectory($dir);
function removeDirectory(string $dir): void < if (is_dir($dir)): $elements = array_diff(scandir($dir), ['.','..']); foreach ($elements as $element): is_dir("$dir/$element") ? removeDirectory("$dir/$element") : unlink("$dir/$element"); endforeach; rmdir($dir); endif; >$dir = __DIR__ . '/dir'; removeDirectory($dir);

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

Данная функция удалит только содержимое директории (очистить её), если не передать в неё вторым параметром флаг на удаление самой директрии.

function clearDir(string $dir, bool $rmdir = false): void < if (is_dir($dir)): if ($objs = glob($dir . '/*')): foreach($objs as $obj): is_dir($obj) ? clearDir($obj, true) : unlink($obj); endforeach; endif; if ($rmdir) rmdir($dir); endif; >$dir = __DIR__ . '/dir'; clearDir($dir); // Очистить директорию и удалить саму директорию clearDir($dir, true);

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

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

function removeFilesExcept(string $dir, array $except): void < if (is_dir($dir)): foreach (glob($dir . '/*') as $file): if (!in_array(basename($file), $except) && is_file($file)): unlink($file); endif; endforeach; endif; >$dir = __DIR__ . '/dir'; $except = ['.htaccess']; removeFilesExcept($dir, $except);

Источник

Читайте также:  Java path как настроить
Оцените статью