Набор PHP функций для работы с директориями, получение списка файлов в папке, копирование и удаление содержимого папок.
То же самое делает функция 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)
— удаляет заданную директорию только при условии, если она пуста.
Удалить директорию со всем содержимым
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:
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 домене):
Спасибо автору