メモ代わり。
<?php /** * @brief 128M => 134217728, 2G => 2147483648 * @param string * @retval int */ function memoryString2Int($string) { $byte = 0; if (preg_match("@^(\d+)([KMGT])$@", $string, $m)){ $powparam = 0; switch ($m[2]){ case "K": $powparam = 1; break; case "M": $powparam = 2; break; case "G": $powparam = 3; break; case "T": $powparam = 4; break; } $byte = $m[1] * pow(1024, $powparam); } return $byte; }
その逆
互換性はない。
<?php function number_format_filesize($string) { $size = intval($string); $unit = "Byte"; $units = array( 1 => "B", 1000 => "kB", 1000000 => "MB", 1000000000 => "GB", 1000000000000 => "TB", ); foreach ($units as $key=>$value){ if ($size/$key<1000){ $s = sprintf("%f", $size/$key); return trim(substr($s, 0, 4),".") . $value; break; } } return $string; }