遍歷資料夾下所有文件,一般可以使用opendir 與 readdir 方法來遍歷。
範例:找出指定目錄下的所有php檔案(不搜尋子資料夾),程式碼如下:
<?php$path = dirname(__FILE__);$result = traversing($path); print_r($result);function traversing($path){ $result = array(); if($handle = opendir($path)){ while($file=readdir($handle)){ if($file!='.' && $file!='..'){ if(strtolower(substr($file, -4))=='.php'){ array_push($result, $file); } } } } return $result; }?>
如使用glob方法來遍歷則可以簡化程式碼
<?php$path = dirname(__FILE__);$result = glob($path.'/*.php'); print_r($result);?>
注意,glob回傳的會是path 搜尋結果的路徑,例如path='/home/fdipzone',以上範例則回傳
Array( [0] => /home/fdipzone/a.php [1] => /home/fdipzone/b.php [2] => /home/fdipzone/c.php )
這是與opendir,readdir傳回的結果不同的地方。
如果只是遍歷目前目錄。可以改成這樣:glob('*.php');
glob語法說明:
array glob ( string $pattern [, int $flags = 0 ] )
glob () 函數依照libc glob() 函數所使用的規則尋找所有與pattern 相符的檔案路徑,類似一般shells 所使用的規則一樣。不進行縮寫擴充或參數替代。 glob使用正規匹配路徑功能強大。
flags 有效標記有:
GLOB_MARK - 在每個傳回的項目中加上一個斜線
GLOB_NOSORT -依照檔案在目錄中出現的原始順序傳回(不排序)
GLOB_NOCHECK - 如果沒有檔案比對則傳回用於搜尋的模式
GLOB_NOESCAPE - 反斜線不轉義元字元
GLOB_BRACE - 擴充{a,b,c} 來符合'a','b' 或'c'
GLOB_ONLYDIR - 僅傳回與模式相符的目錄項目
GLOB_ERR - 停止並讀取錯誤訊息(比如說不可讀的目錄),預設的情況下忽略所有錯誤
範例: 使用glob方法遍歷指定資料夾(包括子資料夾)下所有php檔案
<?php$path = dirname(__FILE__);$result = array(); traversing($path, $result); print_r($result);function traversing($path, &$result){ $curr = glob($path.'/*'); if($curr){ foreach($curr as $f){ if(is_dir($f)){ array_push($result, $f); traversing($f, $result); }elseif(strtolower(substr($f, -4))=='.php'){ array_push($result, $f); } } } }?>
本文講解如何使用glob方法遍歷資料夾下所有檔案的相關方法,更多相關內容請關注php中文網。
相關推薦:
php array_push 與$arr[]=$value 之間的效能比較
以上是如何使用glob方法遍歷資料夾下所有檔案的相關方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!