請選擇 進入手機版 | 繼續訪問電腦版
搜索
熱搜: 活動 交友 discuz
查看: 4633|回復: 0

[PHP] [PHP]取得資料夾內的檔案列表:glob、scandir、readdir - 三種函數基礎介紹

[複製鏈接]
發表於 2014-2-7 17:08:11 | 顯示全部樓層 |閱讀模式
有時候會需要寫PHP程式去取得指定資料夾內的檔案列表,例如在做網路硬碟程式時舊需要這種功能,這裡要跟大家介紹三個函式都可以做到這種功能,只是使用上不太一樣,這三個函式分別是glob、scandir、readdir



一、glob

我個人比較推薦glob,他可以使用含有「萬用字元」的字串當做參數,取得檔案列表,例如./temp裡面有五個txt檔案、十個jpg檔,現在我只要取得jpg的檔案列表,那就寫成:glob(‘./temp/*.jpg’);,然後就會回傳Array,裡面就是jpg的檔案列表,如果要取得所有檔案,則語法為:glob(./temp/*.*);

格式:glob($pattern);

$pattern算是一個…. 你可以把它直接理解成資料夾路徑,然後可以使用萬用字元的意思,就像上面解釋的一樣

範例:
  1. glob('./temp/*.txt');     //只會取得txt附檔名的檔案
  2. glob('./temp/*.jpg');     //只會取得jpg附檔名的檔案
複製代碼
另外glob的第二個參數可以指定陣列的排序方法,相關介紹可以到官網查詢:http://php.net/manual/en/function.glob.php



二、scandir

scandir也算是蠻好用的一個函式,他的回傳值也一樣是Array,回傳值的第一項是「.」,就是目前資料夾的意思,第二項是「..」也就是上一個資料夾,但是他沒辦法像glob那樣指定到檔案格式,scandir的格式是:
  1. scandir($dir_address);
複製代碼
範例:
  1. scandir('./temp');
  2. /* 會取得所有./temp下的資料,包括10個jpg以及5個txt */
複製代碼


三、readdir

readdir這個函式讓我一度有錯覺懷疑他根本沒有出現的必要,他的使用很麻煩,功能又不像glob那麼強大,要使用他必須要先開啟資料夾(opendir),然後把檔案代碼傳到readdir才可以使用,用完之後還要closedir,除了這點比較麻煩以外,他的回傳值是String,執行一次讀取一次,也就是他執行時會取得第一項檔案的資料,在執行第二次會取得第二筆資料,運作上跟mysql_fetch_row一樣,除此之外他的回傳值格式跟scandir一樣,第一個是「.」,第二個是「..」

官方文件:http://php.net/manual/en/function.readdir.php

範例:
  1. $handle=opendir('C:\Users\linroex\Dropbox\music');
  2. while(false!==($file=readdir($handle))){
  3.         echo $file . '</ br>';
  4. }

  5. closedir($handle);
複製代碼
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2020-9-28 15:49 , Processed in 0.071426 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表