Liệt kê file trong thư mục và sự khác nhau giữa các hàm

Đầu tiên là cách cơ bản , sử dụng hàm opendir , ví dụ mở thư mục path/to/dir và chỉ hiển thị các file có đuôi là xml

if ($handle = opendir(‘path/to/dir’)) {
while (false !== ($file = readdir($handle)))
{
if ($file != “.” && $file != “..” && strtolower(substr($file, strrpos($file, ‘.’) + 1)) == ‘xml’)
{
$thelist .= ‘<li><a href=”‘.$file.'”>’.$file.'</a></li>’;
}
}
closedir($handle);
}

Đơn giản hơn ta có thể sử dụng hàm scandir , lấy tất cả các file

$files = array_slice(scandir(‘output/’), 2);

Kết qủa sẽ là 1 mảng các file

Array
(
[0] => An Giang_1524630336187.txt
[1] => An Giang_1524630337605.txt
[2] => An Giang_1524630340463.txt
[3] => An Giang_1524630347021.txt
[4] => An Giang_1524630348185.txt
[5] => An Giang_1524630352246.txt
[6] => An Giang_1524630357769.txt
[7] => An Giang_1524630362762.txt
[8] => Bà Rịa – Vũng Tàu_1524630367562.txt
[9] => Bắc Giang_1524630371388.txt
)

Cách khác cũng đơn giản và hiệu qủa hơn trong việc lọc các file mong muốn

//thư mục để quét
$directory = “output/”;
//lấy tất cả các file có đuôi .txt.
$files = glob($directory . “*.txt”);

Kết qủa là

Array
(
[0] => output/An Giang_1524630336187.txt
[1] => output/An Giang_1524630337605.txt
[2] => output/An Giang_1524630340463.txt
[3] => output/An Giang_1524630347021.txt
[4] => output/An Giang_1524630348185.txt
[5] => output/An Giang_1524630352246.txt
[6] => output/An Giang_1524630357769.txt
[7] => output/An Giang_1524630362762.txt
[8] => output/Bà Rịa – Vũng Tàu_1524630367562.txt
[9] => output/Bắc Giang_1524630371388.txt
)

Như vậy kết qủa có khác giữa scandir và  glob, glob sẽ trả về cả thư mục và tên file , trong khi  scandir chỉ là tên file

Một số hàm khác hỗ trợ việc thao tác với tên file

$ext = pathinfo($filename, PATHINFO_EXTENSION); // lấy đuôi mở rộng của file

$name = basename($filename) ;  // lấy tên file