php

В РНР для удаления файла существует функция unlink(), для удаления пустого каталога - rmdir(). Что делать если нужно рекурсивно удалить папку со всеми файлами и подкаталогами. На помощь приходит glob() в связке с array_map().

Заметьте, что в функции нет ни единого цикла.

function removeDir($path) {
    return is_file($path)
    ? @unlink($path)
    : array_map('removeDir',glob('/*')) == @rmdir($path);
}

Пример вызова

$path = $_SERVER['DOCUMENT_ROOT'].'/test';
removeDir($path);

Похожие публикации:

  1. Отдать PDF на скачку
    При проектировании одного проекта столкнулся с проблемой некоторых браузеров открывать PDF-документ непосредственно в окне браузера. Это чревато тем, что вы...
  2. Умный переключатель языков
    Обычно переключение языков на сайте сделано обычными ссылками вида |ru|en|cn|, которое никак не отслеживает на какой странице пользователь решил поменять...

Теги:

Комментариев - 4

  1. Спасибо за идею, но у меня эта функция не сработала так, как хотелось бы. Я немного подкорректировал функцию и вызов. Теперь она удаляет указанную папку со всеми подпапками и файлами:

    function removeDir($path) {
    return is_file($path)?
    @unlink($path):
    array_map('removeDir',glob($path."/*"))==@rmdir($path);
    }

    // Пример вызова
    $path = $_SERVER['DOCUMENT_ROOT'].'/test';
    removeDir($path);

  2. Да, вы правы — так будет лучше. Поправил в статье.

  3. А если removeDir в классе определять? Как указывать первый параметр array_map?

Оставить комментарий

При написании кода в комментариях вы можете использовать Zen Coding для быстрого ввода HTML.

Предприятие по изготовлению заборов и металлоконструкций. . Хорошие прикольные футболки. Футболки заказ прикольных футболок. . Лучшие цены на отделочные материалы пескобетон м 300 bazarbai.ru