[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 ?
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
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?
Để 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
thank bạn nhé. làm được rồi
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!
Cảm ơn bạn rất nhiều!