這次要一次解說兩個 PHP 的方法(函數),首先先來介紹 glob()
,它可以用來取得匹配之檔案路徑,您可以透過一些特殊字元來尋找檔案的完整相對路徑,舉例來說要取得在 gpx 資料夾下的所有以 .gpx 結尾的檔案路徑,可以用 glob("gpx/*.gpx")
表示,常用的有:*
代表任何數量的所有字元皆匹配、?
代表單一數量的所有字元皆匹配。最終會回傳一個陣列儲存每個匹配的檔案路徑。filesize()
則是可以用來取得指定檔案的大小,該方法只能一次偵測一個檔案的大小,因此要透過迴圈的方式進行多檔偵測,另外其輸出的單位為 Bytes,需要透過自行撰寫的轉換方法來做到顯示 KB、MB、GB 之類的大單位,文末會附上轉換原始碼。
foreach (glob("gpx/*.gpx") as $filename) {
echo "$filename size " . filesize($filename) . "<br>";
}
這樣會輸出以下結果:
gpx/test.gpx size 6766
gpx/test2.gpx size 2784
然後我們可以透過針對 Bytes 設計的轉換方法進行單位轉換(原始碼來源):
function formatSizeUnits($bytes)
{
if ($bytes >= 1073741824) {
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
$bytes = number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
$bytes = number_format($bytes / 1024, 2) . ' KB';
} elseif ($bytes > 1) {
$bytes = $bytes . ' bytes';
} elseif ($bytes == 1) {
$bytes = $bytes . ' byte';
} else {
$bytes = '0 bytes';
}
return $bytes;
}
這樣就可以最大轉換成 GB 囉!與剛剛的轉換方法結合起來用如下:
foreach (glob("gpx/*.gpx") as $filename) {
echo "$filename size " . formatSizeUnits(filesize($filename)) . "<br>";
}
輸出結果如下:
gpx/test.gpx size 6.61 KB
gpx/test2.gpx size 2.72 KB
希望以上有幫助到大家!更多方法細節可查詢 PHP 官方文檔:glob()、filesize()。
▲ 精選圖片。
贊助廣告 ‧ Sponsor advertisements
留言區 / Comments
萌芽論壇