PHP:glob() 取得匹配之檔案路徑、filesize() 取得指定檔案大小

2021/10/22 672 1 網站技術 , PHP

這次要一次解說兩個 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

萌芽論壇