Набор PHP функций для работы с директориями, получение списка файлов в папке, копирование и удаление содержимого папок.
$dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder';
if (!is_dir($dir)) {
mkdir($dir, 0777, True);
}
То же самое делает функция 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) {
if (!in_array(basename($file), $leave) && is_file($file)) {
unlink($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);
}






Пример использования (обновление сайта на .ru домене):
Спасибо автору