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