[PHP] Xóa tất cả file và thư mục con

Chào các bạn,

Có bao giờ bạn muốn xóa 1 thư mục mà chứa nhiều thư mục con và file như hình ảnh dưới đây chưa ?

Folder Tree

Revolutionary AI Porn Generators

Nếu bạn chưa tìm ra giải pháp thì hôm nay tôi sẽ giới thiệu 2 hàm được viết bằng PHP để giải quyết vấn đề trên. Hai hàm này được viết theo kiểu đệ quy (recursive) để xóa hoàn toàn các file/thư mục con trong thư mục ban đầu.

+ Hàm thứ nhất

<?php
function remove_dir($dir = null) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") remove_dir($dir."/".$object);
else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
?>

+ Hàm thứ hai

<?php
function rmdir_recurse($path) {
$path = rtrim($path, '/') . '/';
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if($file != '.' and $file != '..' ) {
$fullpath = $path.$file;
if (is_dir($fullpath)) rmdir_recurse($fullpath);
else unlink($fullpath);
}
}
closedir($handle);
rmdir($path);
}
?>

Và cách sử dụng rất đơn giản, bạn chỉ cần khai báo đường dẫn thư mục cần xóa trong biến $dir ở hàm thứ nhất hoặc biến $path ở hàm thứ hai là được. Hi vọng bài viết này sẽ giúp ích cho các bạn. Thân ái!

Tham khảo: http://www.barattalo.it

Tấn Việt

Tôi lập trang web này để thỏa mãn sở thích viết cái gì đó vui vui khi rãnh rỗi và đồng thời cũng chia sẻ những gì tôi biết hoặc đọc đâu đó trên mạng về Lập trình web. Tôi hi vọng những bài viết này sẽ giúp ích cho các bạn. Thân ái!

You may also like…

5 Responses

  1. ken says:

    2 hàm trên mình sẽ dùng như thế nào vậy bạn.
    mình mới học php nên ko rành lắm
    ví dụ mình có 1 button khi bấm vào đó thì xóa hết các file trong folder abc thì viết như thế nào vậy bạn?

    • Tấn Việt says:

      Để xoá các file trong thư mục thì bạn chỉ cần sử dụng 1 trong 2 hàm đó là được, với tham số truyền vào là đường dẫn đến thư mục abc. Ví dụ trong file thực thi, bạn gọi remove_dir(path_abc_folder) hoặc rmdir_recurse(path_abc_folder). Trong đó path_abc_folder là đường dẫn thư mục abc

  2. ken says:

    thank bạn nhé. làm được rồi

  3. soiqualang_chentreu says:

    Rất hay, đúng cái mình đang cần. Mình đăng viết cái cập nhật, xóa bài viết. Cảm ơn cậu rất nhiều!

  4. soiqualang_chentreu says:

    Cảm ơn bạn rất nhiều!