Рассказываю, как с помощью PHP удалять директории с файлами.
Удалить файл, группу файлов или пустые директории на PHP достаточно просто — для этого есть UnLink и RmDir. Но как быть если нужно удалить не пустые директории с массой файлов и вложенных поддиректорий? Для этого существует рекурсивное удаление.
$dirPath = 'samples/'; public static function deleteDir($dirPath) { if (! is_dir($dirPath)) { throw new InvalidArgumentException("$dirPath must be a directory"); } if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') { $dirPath .= '/'; } $files = glob($dirPath . '*', GLOB_MARK); foreach ($files as $file) { if (is_dir($file)) { self::deleteDir($file); } else { unlink($file); } } rmdir($dirPath); }
В PHP 5.2 и выше данную процедуру можно проделать с помощью RecursiveIterator.
$dir = 'samples' . DIRECTORY_SEPARATOR . 'sampledirtree'; $it = new RecursiveDirectoryIterator($dir); $files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); foreach($files as $file) { if ($file->getFilename() === '.' || $file->getFilename() === '..') { continue; } if ($file->isDir()){ rmdir($file->getRealPath()); } else { unlink($file->getRealPath()); } } rmdir($dir);
Делаю сайты на Вордпресс с 2008 года, в том числе уникальные инструменты для решения сложных бизнес‑задач.
Подробнее
зачем сравнения по типу?