Hướng dẫn liệt kê danh sách thư mục bằng php năm 2024

23 Th3

Posted 23.03.2011 by anhnga2607 in PHP.

Làm sao để lấy được danh sách các hình ảnh, hay tập tin trong một thư mục nào đó để hiển thị ra trình duyệt mà không cần phải liệt kê bằng tay khi có hàng nghìn tập tin trong thư mục đó, tên của các tập tin thật khó nhớ. Với hàm mà mình đã tối ưu dưới đây, mong rằng sẽ giúp các bạn giải quyết được công việc khó khăn trên. define('PATH', 'images/'); // Khai báo đường đẫn đến thư mục $files = array(); $dir = opendir(PATH); while ($f = readdir($dir)){ if(eregi(".jpg|.gif|.png",$f)) array_push($files,$f); } closedir($dir);

$data = array(); if(!empty($files)){ foreach ($files as $k => $v){ echo ''; } }

Trong bài trước, bạn đã học cách làm việc với các tệp trong PHP. Thì tương tự, trong PHP cũng cho phép bạn làm việc với các thư mục .

Ví dụ bạn có thể:

  • Mở một thư mục và đọc nội dung của nó,
  • Tạo hoặc xóa một thư mục
  • Liệt kê tất cả các tệp trong thư mục.
  • v.v.

1. Cách tạo một thư mục mới bằng PHP

Để tạo một thư mục mới bạn sử dụng hàm mkdir() của PHP với đường dẫn và tên của thư mục sẽ được tạo, như trong ví dụ dưới đây:

Lưu ý: Để làm cho hàm mkdir() hoạt động, các thư mục cha trong tham số đường dẫn thư mục phải tồn tại, ví dụ, nếu bạn chỉ định đường dẫn thư mục là testdir/subir thì thư mục testdir phải tồn tại nếu không PHP sẽ báo lỗi.

2. Cách sao chép file từ vị trí này sang vị trí khác trong PHP

Bạn có thể sao chép một file từ vị trí này sang vị trí khác bằng cách gọi hàm copy() trong PHP với các đường dẫn nguồn và đích của file làm đối số.

Nếu file đích đã tồn tại, nó sẽ bị ghi đè. Đây là một ví dụ tạo ra một bản sao của tệp ‘example.txt’ trong thư mục sao lưu.

Lưu ý: Để làm cho ví dụ này hoạt động, thư mục đích được sao lưu và tệp nguồn (tức là thư mục backup) phải tồn tại nếu không PHP sẽ báo lỗi.

3. Liệt kê tất cả các file trong một thư mục trong PHP

Bạn có thể sử dụng hàm scandir() của PHP để liệt kê các file và thư mục bên trong đường dẫn đã chỉ định.

Chúng ta sẽ thử tạo một hàm tùy chỉnh để liệt kê đệ quy tất cả các file trong một thư mục bằng PHP.

Kịch bản này sẽ rất hữu ích nếu bạn đang làm việc với cấu trúc thư mục được lồng sâu.

 0){
            // Lặp qua mảng đã trả lại
            foreach($files as $file){
                if(is_file("$path/$file")){
                    // Hiển thị tên File
                    echo $file . "
"; } else if(is_dir("$path/$file")){ // Gọi đệ quy hàm nếu tìm thấy thư mục outputFiles("$path/$file"); } } } else{ echo "ERROR: Không có file nào trong thư mục."; } } else { echo "ERROR: Thư mục không tồn tại."; } } // Gọi hàm outputFiles("mydir"); ?>

4. Cách liệt kê tất cả các file thuộc một loại nhất định

Trong khi làm việc trên cấu trúc thư mục và file, đôi khi bạn cần tìm ra một số loại tệp nhất định ở bên trong thư mục nào đó, ví dụ:

  • Chỉ liệt kê các tệp .text hoặc .png, v.v

Bạn có thể thực hiện hành động này một cách dễ dàng với hàm glob().

Đoạn code PHP trong ví dụ sau sẽ tìm kiếm thư mục documents và liệt kê tất cả các file có đuôi là .text. Nó sẽ không tìm kiếm file ở trong các thư mục con.

";
}
?>

Hàm glob() cũng có thể được sử dụng để tìm tất cả các file trong một thư mục hoặc thư mục con của nó.

Hàm được định nghĩa trong ví dụ sau sẽ liệt kê đệ quy tất cả các file trong một thư mục, giống như chúng ta đã thực hiện trong ví dụ trước với hàm scandir().

 0){
            // Lặp qua mảng đã trả về
            foreach($files as $file){
                if(is_file("$file")){
                    // Hiển thị tên file
                    echo basename($file) . "
"; } else if(is_dir("$file")){ // Gọi đệ quy hàm nếu tìm thấy thư mục outputFiles("$file"); } } } else{ echo "ERROR: Không tìm thấy file nào trong thư mục."; } } else { echo "ERROR: Thư mục không tồn tại."; } } // Gọi hàm outputFiles("mydir"); ?>

Tổng kết.

Như vậy là qua bài này bạn đã biết một số thao tác cơ bản để làm việc với thư mục trong PHP. Hãy thực hành lại các ví dụ để hiểu rõ các vấn đề về thư mục nhé.