PHP遍歷目錄函式opendir()、readdir()、closedir()、rewinddir()總結
在進行PHP編程時,需要對伺服器某個目錄下面的檔案進行瀏覽,通常成為遍歷目錄。取得一個目錄下的檔案和子目錄,就需要用到opendir()函式、readdir()函式、closedir()函式和rewinddir()函式。
①函式opendir()
函式opendir()用於打開指定目錄,接受一個目錄的路徑及目錄名作為參數,函式返回值為可供其他目錄函式使用的目錄句柄(資源類型)。如果該目錄不存在或者沒有訪問許可權,則返回FALSE。
②函式readdir()
函式readdir()用於讀取指定目錄,接受已經用opendir()函式打開的可操作目錄句柄作為參數,函式返回當前目錄指針位置的一個檔案名稱,並將目錄指針向後移動一位。當指針位於目錄的結尾時,因為沒有檔案存在則返回FALSE。
③函式closedir()
函式closedir()關閉指定目錄,接受已經用opendir()函式打開的可操作目錄句柄作為參數。函式無返回值,運行後關閉打開的目錄。
④函式rewinddir()
函式reweinddir()倒回目錄句柄,接受已經用opendir()函式打開的可操作目錄句柄作為參數。將目錄指針重置目錄到開始處,即倒回目錄的開頭。
下面用一個實例來說明以上幾個函式的使用方法。注意,在使用該例子前請確保同意目錄下有phpMyAdmin資料夾。代碼如下所示:
複製代碼代碼如下:
<?php
$num=0;//用來統計子目錄和檔案的個數
$dirname="phpMyAdmin";//保存當前目錄下用來便利的一個目錄名
$dir_handle=opendir($dirname);//用opendir打開目錄
//將遍歷的目錄和檔案名稱使用表格格式輸出
echo'';
echo'目錄'.$dirname.'下面的內容';
echo'';
echo'檔案名稱檔案大小檔案類型修改時間';
//使用readdir循環讀取目錄里的內容
while($file=readdir($dir_handle)){
//將將目錄下的檔案和當前目錄連線起來,才能在程式中使用
$dirFile=$dirname."/".$file;
$bgcolor=$num+%2==0?'#FFFFFF':'#CCCCCC';//各行一種顏色
echo'';
echo''.filesize($dirFile).'';//顯示檔案名稱
echo''.filetype($dirFile).'';//顯示檔案大小
echo''.date("Y/n/t",filemtime($dirFile)).'';//格式化顯示檔案修改時間
echo'';
}
echo'';
closedir($dir_handle);//關閉檔案操作句柄
echo'在'.$dirname.'目錄下的子目錄和檔案共有'.$num.'個';
?>
上述程式首先打開一個目錄指針,並對其進行遍歷。遍歷目錄時,會包括“.”和“..”兩個特殊的目錄,如果不需要這倆個目錄,可以將其禁止。當然顯示細節會因為資料夾中內容的不同而有所不同。通過上例可見,在PHP中瀏覽資料夾中的內容也並不是一件多么複雜的事情。而且PHP還提供了一種面向對象的方式用於目錄的遍歷,通過使用“dir”類完成。不僅如此,PHP也可以按用戶的要求檢索目錄下指定的內容,提供了glob()函式檢索指定的目錄。該函式最終返回一個包含檢索結果的數組。