[PHP] ファイルサイズを数値に直す関数

以前、[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