[PHP] ファイルサイズを数値に直す関数
1 min read
以前、[JavaScript] ファイルサイズを数値に直す関数という記事を書きましたが、今回はその PHP 版です。
大まかな使用は前述の記事と同じです。
6B 102KB 2,500KB 800MB 2GB 1TB
上記のような文字列にある程度対応できるような関数になります。
ファイルサイズ変換関数
function filesize_format($size) { // 変数宣言 $mul = 1024; $suf_array = array(); $suf = ''; $num_array = array(); $num = 0;
// カンマを外す
$size = str_replace(',', '', $size);// 単位を判定
preg_match('/(B|KB|MB|GB|TB)/i', $size, $suf_array);
isset($suf_array[0]) ? $suf = strtoupper($suf_array[0]) : $suf;// 数値を取り出す
preg_match('/^[0-9]+(.[0-9]+)?/', $size, $num_array);
isset($num_array[0]) ? $num = intval($num_array[0]) : $num;
// 計算
switch ($suf) {
case "B":
default :
return $num;
case "KB":
return $num * pow($mul, 1);
case "MB":
return $num * pow($mul, 2);
case "GB":
return $num * pow($mul, 3);
case "TB":
return $num * pow($mul, 4);
}
}
指定文字のカンマを外して、数値と単位に分けて、単位によって計算をして値を返します。
使い方
$size = '2,048KB';
filesize_format($size);
// => 2097152