一、介紹readdir函數
PHP readdir函數用於讀取打開目錄句柄所指的目錄,將目錄中的文件和子目錄讀取到數組中。Readdir函數可以方便地列出整個網站根目錄下的所有文件和文件夾,從而達到靈活的文件處理目的。
二、readdir函數使用示例
<?php
//打開目錄句柄
$dir_handle = opendir('/var/www/html/');
//輸出目錄中的所有文件名
while (($filename = readdir($dir_handle)) !== false) {
echo $filename . "
";
}
//關閉目錄句柄
closedir($dir_handle);
?>
以上代碼會輸出/var/www/html/目錄中的所有文件名
三、readdir函數常用應用場景
1. 讀取目錄下的所有文件
只需要將readdir函數的返回值放入一個循環中即可輸出整個目錄下的所有文件名。
<?php
//打開目錄句柄
$dir_handle = opendir('/var/www/html/');
//輸出目錄中的所有文件名
while (($filename = readdir($dir_handle)) !== false) {
if ($filename != "." && $filename != "..") {
echo $filename . "
";
}
}
//關閉目錄句柄
closedir($dir_handle);
?>
以上代碼會輸出/var/www/html/目錄中的所有文件名,並且不會輸出”.”和”..”。
2. 讀取目錄下指定類型的文件
如果只需要讀取某個類型文件,可以通過正則表達式對文件名進行篩選。
<?php
//打開目錄句柄
$dir_handle = opendir('/var/www/html/');
//輸出目錄中的所有指定類型文件名
while (($filename = readdir($dir_handle)) !== false) {
if (preg_match("/\.txt$/i", $filename)) {
echo $filename . "
";
}
}
//關閉目錄句柄
closedir($dir_handle);
?>
以上代碼會輸出/var/www/html/目錄中的所有txt文件名。
3. 讀取目錄下的所有子目錄
只需要判斷文件類型是否為目錄即可。
<?php
//打開目錄句柄
$dir_handle = opendir('/var/www/html/');
//輸出目錄中的所有子目錄
while (($filename = readdir($dir_handle)) !== false) {
if (is_dir("/var/www/html/" . $filename)) {
echo $filename . "
";
}
}
//關閉目錄句柄
closedir($dir_handle);
?>
以上代碼會輸出/var/www/html/目錄中的所有子目錄名。
4. 遞歸讀取目錄下的所有文件和子目錄
遞歸讀取目錄下的所有文件和子目錄需要使用到一個自定義函數,如下所示。
<?php
function read_all_dir($dir) {
if (!is_dir($dir)) {
return false;
}
$handle = opendir($dir);
while (($filename = readdir($handle)) !== false) {
if ($filename == "." || $filename == "..") {
continue;
}
if (is_dir($dir . "/" . $filename)) {
echo "" . $filename . "
";
read_all_dir($dir . "/" . $filename . "/");
} else {
echo $filename . "
";
}
}
closedir($handle);
}
read_all_dir("/var/www/html/");
?>
以上代碼會輸出/var/www/html/目錄下所有文件和子目錄的名稱,並且目錄名會被加粗顯示。
四、總結
PHP的readdir函數可以方便地讀取目錄下的所有文件和子目錄,可以用於文件處理、文件上傳、文件管理等各種場景。需要注意的是,讀取整個目錄的過程中可能會因為權限問題、文件大小等原因導致程序異常,需要根據實際情況進行調整。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/227291.html