PHP xóa tất cả các tệp và thư mục trong thư mục

Ví dụ đầu tiên của chúng tôi khá đơn giản, vì chúng tôi chỉ cần lặp qua các tệp và sau đó xóa chúng

Hãy xem mẫu mã sau đây

//The name of the folder.
$folder = 'temporary_files';

//Get a list of all of the file names in the folder.
$files = glob[$folder . '/*'];

//Loop through the file list.
foreach[$files as $file]{
    //Make sure that this is a file and not a directory.
    if[is_file[$file]]{
        //Use the unlink function to delete the file.
        unlink[$file];
    }
}
  1. Trong ví dụ này, chúng tôi sẽ xóa tất cả các tệp khỏi một thư mục có tên là “temporary_files”
  2. Chúng tôi liệt kê các tệp trong thư mục này bằng cách sử dụng chức năng toàn cục của PHP. Hàm toàn cầu về cơ bản tìm tên đường dẫn khớp với một mẫu nhất định. Trong trường hợp này, chúng tôi sử dụng ký tự đại diện [dấu hoa thị] để xác định rằng chúng tôi muốn chọn mọi thứ bên trong thư mục “tệp tạm thời”
  3. Hàm toàn cầu trả về một mảng tên tệp nằm trong thư mục đã chỉ định
  4. Sau đó chúng tôi lặp qua mảng này
  5. Sử dụng hàm is_file, chúng ta kiểm tra xem đó có phải là tệp không chứ không phải thư mục mẹ hay thư mục con
  6. Cuối cùng, chúng tôi sử dụng chức năng hủy liên kết để xóa tệp

Xóa tệp trong thư mục con

Để xóa tất cả các tệp và thư mục trong tất cả các thư mục con, chúng ta có thể sử dụng đệ quy

Dưới đây là một ví dụ về hàm PHP đệ quy xóa mọi tệp và thư mục trong một thư mục đã chỉ định

function deleteAll[$str] {
    //It it's a file.
    if [is_file[$str]] {
        //Attempt to delete it.
        return unlink[$str];
    }
    //If it's a directory.
    elseif [is_dir[$str]] {
        //Get a list of the files in this directory.
        $scan = glob[rtrim[$str,'/'].'/*'];
        //Loop through the list of files.
        foreach[$scan as $index=>$path] {
            //Call our recursive function.
            deleteAll[$path];
        }
        //Remove the directory itself.
        return @rmdir[$str];
    }
}

//call our function
deleteAll['temporary_files'];

Về cơ bản, hàm trên kiểm tra xem biến $str có đại diện cho đường dẫn đến tệp không. Nếu nó đại diện cho một đường dẫn đến một tệp, nó sẽ xóa tệp bằng chức năng hủy liên kết

Tuy nhiên, nếu $str đại diện cho một thư mục, thì nó sẽ nhận danh sách tất cả các tệp trong thư mục đã nói trước khi xóa từng tệp

Đôi khi bạn cần giải phóng không gian của máy chủ web bằng cách xóa các tệp cũ hoặc cụ thể hoặc tất cả các tệp khỏi một thư mục. Có nghĩa là bạn muốn xóa tệp khỏi thư mục mà không biết tên tệp. Loại chức năng này cần thiết cho tình huống sau

  • Cần xóa tất cả các tệp trong một thư mục để giải phóng không gian của máy chủ web
  • Cần xóa các tệp cũ trong một thư mục được sử dụng trước thời gian cụ thể
  • Cần xóa một số tệp khỏi thư mục chứa tiện ích mở rộng cụ thể
  • Và nhiều hơn nữa

Trong bài viết ngắn này, chúng ta sẽ viết một đoạn script PHP đơn giản để hủy liên kết hoặc xóa tất cả các tệp khỏi thư mục hoặc thư mục. Không cần biết tên tập tin. Để xóa các tệp khỏi thư mục, chúng tôi sẽ sử dụng các hàm glob[]unlink[] trong PHP. Hàm
______5 được sử dụng để lấy tên tệp hoặc thư mục dưới dạng một mảng dựa trên mẫu đã chỉ định. Hàm
______6 dùng để xóa một tập tin.

Ở đây mã PHP được cung cấp cho ba trường hợp. Trong những tình huống này, bạn cần xóa tất cả chức năng tệp trong dự án web của mình

Xóa tất cả tệp khỏi thư mục.
Tập lệnh sau xóa tất cả tệp khỏi thư mục.

$files = glob['my_folder/*']; //get all file names
foreach[$files as $file]{
    if[is_file[$file]]
    unlink[$file]; //delete file
}

Xóa đệ quy tất cả các tệp thuộc loại cụ thể khỏi thư mục.
Tập lệnh sau chỉ xóa những tệp có phần mở rộng cụ thể.

$files = glob['my_folder/*.jpg']; //get all file names
foreach[$files as $file]{
    if[is_file[$file]]
    unlink[$file]; //delete file
}

Xóa tập tin cũ khỏi thư mục.
Tập lệnh sau sẽ xóa các tệp đã sửa đổi trước thời gian đã chỉ định.

$files = glob['my_folder/*']; //get all file names
foreach[$files as $file]{
    $lastModifiedTime = filemtime[$file];
    $currentTime = time[];
    $timeDiff = abs[$currentTime - $lastModifiedTime]/[60*60]; //in hours
    if[is_file[$file] && $timeDiff > 10] //check if file is modified before 10 hours
    unlink[$file]; //delete file
}

Bạn có muốn nhận trợ giúp triển khai hay sửa đổi hoặc nâng cao chức năng của tập lệnh này không?

Cách xóa tất cả các tệp và thư mục con khỏi một thư mục bằng php. Như xóa tất cả các tệp của người dùng không hoạt động trong thời gian dài, xóa các tệp cũ hơn 3 tháng, v.v. Dù lý do là gì thì việc dọn dẹp thủ công như vậy là một công việc tẻ nhạt. Bạn có thể hoàn thành nó với sự trợ giúp của tập lệnh php tự động. Và chúng tôi sẽ giải thích cách xóa thư mục và tất cả các tệp và thư mục con khỏi nó bằng php

Chức năng PHP được xác định trước để xóa các tệp khỏi thư mục

glob[] và unlink[] chỉ có hai hàm php gốc

  • Hàm glob[] trả về một mảng tên tệp/thư mục khớp với mẫu đã cho
  • Hàm unlink[] xóa một tệp đã cho

Đây là hàm php đơn giản mà tôi đã viết để xóa tất cả các tệp khỏi một thư mục. Tiếp theo, chúng tôi lặp qua từng tệp một và kiểm tra xem mục đó có phải là tệp chứ không phải thư mục con hay không bằng hàm is_file[]

 foreach[glob[$dir. '/*'] dưới dạng $file]{
        // kiểm tra xem đây có phải là tệp chứ không phải thư mục con
        if[is_file[$file]]{ [60 * 60 * 24 * 90]]
                unlink[$file];
        }
    }


Xóa tất cả các tệp và thư mục con khỏi một thư mục trong PHP

Chỉ cần xóa một thư mục bằng rmdir[] sẽ không hoạt động. nó sẽ ném ngoại lệ nếu bạn định xóa thư mục có tệp trong đó. Vì vậy, trước tiên, bạn phải xóa từng tệp một khỏi từng thư mục con cộng với phần còn lại của tệp, sau đó xóa các thư mục bằng cách xóa thư mục mẹ

Làm cách nào để xóa tất cả các tệp và thư mục trong một thư mục trong PHP?

Đây là hàm đệ quy php để xóa tệp và thư mục con khỏi thư mục.

Chủ Đề