Làm cách nào để lấy tất cả các tệp trong thư mục php?

Trong hướng dẫn dành cho người mới bắt đầu này, tôi sẽ chỉ cho bạn cách liệt kê tất cả các tệp trong một thư mục bằng PHP. Chúng tôi sẽ thực hiện việc này bằng cách sử dụng hàm toàn cầu PHP, cho phép chúng tôi truy xuất danh sách tên đường dẫn tệp khớp với một mẫu nhất định

Đối với ví dụ này, tôi đã tạo một thư mục có tên là “test”. Trong thư mục, tôi đã tạo ba tệp

  • kiểm tra. txt
  • tên. txt
  • tập tin. php

Đây là một ảnh chụp màn hình của thư mục

Làm cách nào để lấy tất cả các tệp trong thư mục php?

Trong đoạn mã PHP đầu tiên của chúng tôi, chúng tôi sẽ chỉ liệt kê mọi thứ có trong thư mục kiểm tra

<?php

//Get a list of file paths using the glob function.
$fileList = glob('test/*');

//Loop through the array that glob returned.
foreach($fileList as $filename){
   //Simply print them out onto the screen.
   echo $filename, '<br>'; 
}

Kết quả sẽ giống như thế này

test/file.php
test/names.txt
test/test.txt

Tuy nhiên, nếu chúng tôi muốn liệt kê tất cả các tệp có phần mở rộng tệp cụ thể thì sao? . e. Điều gì sẽ xảy ra nếu chúng ta chỉ muốn liệt kê. txt chứ không phải. php hiện đang có?

Chà, giải pháp khá đơn giản

//Get a list of all files ending in .txt
$fileList = glob('test/*.txt');

Trong đoạn mã trên, chúng tôi đã yêu cầu hàm toàn cục trả về danh sách tên đường dẫn tệp kết thúc. txt

Cảnh báo. Trong một số trường hợp, thư mục có thể có thư mục con. Trong trường hợp bạn đang liệt kê mọi thứ bên trong một thư mục được chỉ định, các thư mục con này sẽ được hàm toàn cục trả về. Để tránh in ra hoặc tương tác với các thư mục con, bạn chỉ cần sử dụng hàm is_file để xác nhận rằng tên đường dẫn tệp được đề cập dẫn đến một tệp thực tế

❮ Tham khảo thư mục PHP

Thí dụ

Liệt kê các tệp và thư mục bên trong thư mục hình ảnh

$dir = "/hình ảnh/";

// Sắp xếp theo thứ tự tăng dần - đây là mặc định
$a = scandir($dir);

// Sắp xếp theo thứ tự giảm dần
$b = scandir($dir,1);

print_r($a);
print_r($b);
?>

Kết quả

Mảng
(
[0] =>.
[1] =>.
[2] => con mèo. gif
[3] => con chó. gif
[4] => ngựa. gif
[5] => myimages
)
Mảng
(
[0] => myimages
[1] => horse.gif
[2] => con chó. gif
[3] => con mèo. gif
[4] =>.
[5] =>.
)



Định nghĩa và cách sử dụng

Hàm scandir() trả về một mảng các tệp và thư mục của thư mục đã chỉ định


cú pháp

scandir(thư mục, thứ tự, ngữ cảnh)

Giá trị tham số

Tham sốMô tảthư mụcBắt buộc. Chỉ định thư mục được quétorderOptional. Chỉ định thứ tự sắp xếp. Thứ tự sắp xếp mặc định là thứ tự chữ cái tăng dần (0). Đặt thành SCANDIR_SORT_DESCENDING hoặc 1 để sắp xếp theo thứ tự bảng chữ cái giảm dần hoặc SCANDIR_SORT_NONE để trả về kết quả chưa được sắp xếp theo ngữ cảnhTùy chọn. Chỉ định bối cảnh xử lý thư mục. Bối cảnh là một tập hợp các tùy chọn có thể sửa đổi hành vi của luồng

chi tiết kỹ thuật

Giá trị trả về. Một mảng các tệp và thư mục khi thành công, FALSE khi thất bại. Ném E_WARNING nếu thư mục không phải là thư mụcPhiên bản PHP. 5. 0+Nhật ký thay đổi PHP. PHP5. 4. Các hằng số thứ tự đã được thêm vào
❮ Tham khảo thư mục PHP

Trong bài viết này, chúng ta sẽ xem cách lấy tất cả các tệp từ thư mục hiện tại hoặc thư mục được chỉ định bằng cách sử dụng hàm scandir() trong PHP. Hàm scandir() trong PHP là một hàm sẵn có được sử dụng để trả về một mảng các tệp và thư mục của thư mục đã chỉ định. Hàm scandir() liệt kê các tệp và thư mục có trong một đường dẫn đã chỉ định. Thư mục, hành vi truyền phát và thứ tự sắp xếp của các tệp và thư mục được truyền dưới dạng tham số cho hàm scandir() và nó trả về một mảng tên tệp nếu thành công hoặc sai nếu không thành công.  

cú pháp

scandir(directory, sorting_order, context);

Thông số. Hàm scandir() trong PHP chấp nhận 3 tham số được liệt kê bên dưới

  • danh mục. Nó là một tham số bắt buộc chỉ định đường dẫn
  • sắp xếp_thứ tự. Nó là một tham số tùy chọn chỉ định thứ tự sắp xếp. Thứ tự tăng dần theo bảng chữ cái (0) là thứ tự sắp xếp mặc định. Nó có thể được đặt thành SCANDIR_SORT_DESCENDING hoặc 1 để sắp xếp theo thứ tự giảm dần theo bảng chữ cái hoặc SCANDIR_SORT_NONE để trả về kết quả chưa được sắp xếp
  • định nghĩa bài văn. Đây là một tham số tùy chọn chỉ định hành vi của luồng

Giá trị trả về. Nó trả về một mảng tên tệp khi thành công hoặc sai khi thất bại

lỗi và ngoại lệ

  • Hàm scandir() đưa ra lỗi ở mức E_WARNING nếu thư mục được chỉ định không phải là thư mục
  • Thực hiện quét đệ quy trên một thư mục có nhiều tệp có thể sẽ làm chậm ứng dụng của bạn hoặc khiến mức tiêu thụ RAM tăng cao do kích thước lớn của mảng được tạo

Cách tiếp cận. Để lấy tất cả các tệp từ thư mục cụ thể, chúng ta cần chỉ định đường dẫn đầy đủ của tệp và lưu trữ giá trị đường dẫn trong biến là $mydir. Sau đó, sử dụng hàm scandir() sẽ quét các tệp trong một thư mục hiện tại hoặc cụ thể và trả về một mảng các tệp và thư mục. Theo mặc định, nó sẽ được căn chỉnh theo thứ tự tăng dần theo thứ tự bảng chữ cái & 0 là thứ tự sắp xếp mặc định, 1 để sắp xếp theo thứ tự giảm dần theo thứ tự bảng chữ cái và SCANDIR_SORT_NONE  cho thứ tự chưa sắp xếp

ví dụ 1. Ví dụ dưới đây minh họa hàm scandir() sẽ quét các tệp và giá trị trả về sẽ theo thứ tự tăng dần

PHP




//Get a list of all files ending in .txt
$fileList = glob('test/*.txt');
9

scandir(directory, sorting_order, context);
0

scandir(directory, sorting_order, context);
0
scandir(directory, sorting_order, context);
2

scandir(directory, sorting_order, context);
0
scandir(directory, sorting_order, context);
4
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
0
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
1
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
2

 

scandir(directory, sorting_order, context);
0____44

scandir(directory, sorting_order, context);
0_______46
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
7____34
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
9

 

scandir(directory, sorting_order, context);
0____111

scandir(directory, sorting_order, context);
0____113____46
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
9

test/file.php
test/names.txt
test/test.txt
16

đầu ra

(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)

ví dụ 2. Ví dụ này minh họa hàm scandir() sẽ quét các tệp và giá trị trả về sẽ theo thứ tự giảm dần

PHP




//Get a list of all files ending in .txt
$fileList = glob('test/*.txt');
9

scandir(directory, sorting_order, context);
0

scandir(directory, sorting_order, context);
0
scandir(directory, sorting_order, context);
2

scandir(directory, sorting_order, context);
0
scandir(directory, sorting_order, context);
4
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
0
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
1
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
2

 

scandir(directory, sorting_order, context);
0
//Get a list of all files ending in .txt
$fileList = glob('test/*.txt');
07

scandir(directory, sorting_order, context);
0______46
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
7____34
//Get a list of all files ending in .txt
$fileList = glob('test/*.txt');
92

 

scandir(directory, sorting_order, context);
0____111

scandir(directory, sorting_order, context);
0____113____46
(
[0] => .
[1] => ..
[2] => aboutus.php
[3] => contact.php
[4] => index.php 
[5] => terms.php
)
9

test/file.php
test/names.txt
test/test.txt
16

đầu ra

test/file.php
test/names.txt
test/test.txt
1

ví dụ 3. Ví dụ này minh họa hàm scandir() sẽ quét các tệp và giá trị trả về sẽ theo thứ tự chưa sắp xếp

Làm cách nào để lấy tất cả các tệp từ THƯ MỤC trong PHP?

Hàm scandir() trả về một mảng các tệp và thư mục của thư mục đã chỉ định.

Làm cách nào để lấy tên tệp trong FOLDER PHP?

php $directory = "Hình ảnh"; . .
Trả lại cho tôi tất cả các tệp trừ hai tệp rác có tên ". " và ". ". .
Sử dụng $files = array_diff(scandir($path), mảng('. .

__ TRỰC TIẾP __ trong PHP là gì?

Có thể sử dụng __DIR__ để lấy thư mục làm việc của mã hiện tại . Nó đã được giới thiệu trong PHP bắt đầu từ phiên bản 5. 3. Nó tương tự như sử dụng dirname(__FILE__). Thông thường, nó được sử dụng để bao gồm các tệp khác có trong một tệp được bao gồm.