函數 返回類型 描述
opendir 資源句柄 獲得指定目錄的資源句柄
is_dir 布爾 判斷是否爲目錄
is_readable 布爾 給定目錄是否可讀
readdir 字符串 經過資源句柄中讀一個文件的文件名,指針後移,若是不存 在或者已在最後的話在返回false
closedir void 關閉資源句柄,釋放資源
scandir 數組 返回指定目錄下全部的文件和目錄組成的數組
遍歷指定文件夾中的文件
該段代碼完成對指定目錄中文件與目錄的的基本遍歷,其中readdir 函數讀取給定目錄資源句柄$handle裏的文件並將指針後移,若是已經達到最後一個文件的話,則返回false。另外"."表明本層目錄".."表明上層目錄也會被列出,在大多數狀況下咱們須要把他們過濾掉。
遍歷指定文件夾下指定類型的文件
多數狀況下,咱們對目錄的遍歷每每要受限於某些條件,例如,咱們只要遍歷出指定目錄下的圖像文件或者全部的xml文件。爲知足上面的要求,咱們重寫代碼,而且把代碼封裝到一個函數裏。該函數能過濾掉"."和".."和目錄,並根具參數返回指定的擴展名的文件。
以上函數,能夠得到指定目錄下指定類型的文件。若是咱們想得到mypics下的全部jpeg和png的文件的話調用該函數: php
$temp = getFileFrom("./mypics",array('jpeg','png'));>html
目錄樹的遞歸遍歷
我想在php中最實用的遞歸函數就是對目錄的遞歸遍歷了,下面的函數能夠得到指定目錄的完整結構。同時用scandir代替了opendir來簡化代碼。
神奇的glob
glob是php4.3.0後加入的十分強大的函數,惋惜官方手冊上的介紹並不詳細。該函數定義以下: 數組
array glob ( string $pattern [, int $flags = 0 ] )ide
glob有兩個參數 $pattern 與 可選的 $flag。$pattern 在字面是模板而不是單純的指定目錄的字符串, $flag 是一些常量參數,用來改變glob的行爲。
經過實踐來學習他的用法。咱們的code1是用來遍歷一個目錄下全部文件的代碼,若是用glob寫的話能夠這樣。
我 們能夠看到區別,首先glob要簡單的多,其次glob的第一個參數,"d:/wamp/*"告訴glob要查找的文件是"d:/wamp"目錄下的全部 文件,因而可知$pattern更像是操做系統的通配符。並且返回的內容中已通過濾掉了'.'和'..',若是咱們要找到全部的bmp文件只要把參數寫 成"d:/wamp/*.bmp"就能夠了,這下子簡單多了。舉個常見的例子,好比咱們的網站下有個文件夾叫wallpaper,下面的每一個目錄是 wallpaper的分類,而每個分類下又包含兩目錄,origin(正常大小的),和thumb(縮略圖),咱們須要一段代碼來讀取全部分類的全部縮 略圖,若是不是用glob將是很麻煩的一段代碼,用glob的話,代碼就是下面的樣子了: 函數
foreach(glob("wallpaper/*/thumb/*") as $fileName){
ehco $fileName;
}學習
glob第二個參數的含義:
GLOB_MARK 爲每個目錄添加一個反斜槓
GLOB_NOSORT; 結果不通過排序
GLOB_NOCHECK 若是沒有匹配的結果,則返回模板自己
GLOB_NOSPACE Backslashes do not quote metacharacters
GLOB_BRACE {a,b,c}分解爲a,b,c並分別匹配(重要)
GLOB_ONLYDIR 僅返回目錄
GLOB_ERR Stop on read errors (like unreadable directories), by default errors are ignored.
若是咱們要查找圖片的文件的話能夠這樣寫網站
foreach(glob("d:/wamp/{*.jpeg,*.jpg,*.gif}", GLOB_BRACE) as $filename){
echo $filename;
}url