[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