Легкое удаление файлов в PHP: полное руководство

В PHP удаление файлов — обычная задача, с которой разработчики регулярно сталкиваются. Будь то удаление ненужных файлов, очистка временных файлов или управление загрузками пользователей, хорошее понимание различных методов удаления файлов может упростить процесс кодирования. В этой статье мы рассмотрим несколько методов удаления файлов в PHP, а также приведем практические примеры кода. Итак, приступим!

Метод 1: использование функции unlink()
Самый простой и понятный метод удаления файла в PHP — использование функции unlink(). Он позволяет удалить файл из файловой системы сервера всего одной строкой кода. Вот пример:

$fileToDelete = 'path/to/file.txt';
if (file_exists($fileToDelete)) {
    unlink($fileToDelete);
    echo "File deleted successfully!";
} else {
    echo "File not found!";
}

Метод 2: удаление нескольких файлов с помощью glob()
Если вам нужно удалить несколько файлов, соответствующих определенному шаблону, вы можете использовать функцию glob()для получения списка файлов. Объединив его с функцией unlink(), вы можете легко удалить несколько файлов за один раз. Посмотрите пример ниже:

$filesToDelete = glob('path/to/files/*.txt');
foreach ($filesToDelete as $file) {
    if (file_exists($file)) {
        unlink($file);
    }
}

Метод 3: удаление каталога и его содержимого
Иногда вам может потребоваться удалить весь каталог вместе со всеми его файлами и подкаталогами. PHP предоставляет функцию rmdir(), которую можно использовать для удаления пустого каталога. Однако, чтобы удалить каталог и его содержимое, вы можете использовать комбинацию scandir(), unlink()и рекурсию. Давайте посмотрим пример:

function deleteDirectory($dirPath) {
    if (!is_dir($dirPath)) {
        return;
    }
    $files = scandir($dirPath);
    foreach ($files as $file) {
        if ($file !== '.' && $file !== '..') {
            $filePath = $dirPath . '/' . $file;
            if (is_dir($filePath)) {
                deleteDirectory($filePath);
            } else {
                unlink($filePath);
            }
        }
    }
    rmdir($dirPath);
}
$directoryToDelete = 'path/to/directory';
deleteDirectory($directoryToDelete);