PHP 的字節格式化函數:byteFormat
一個簡單的PHP 函數,可以將字節(bytes)轉換成想要的格式,可以使用以下的單位::
字節(B),
千字節(KB),
兆字節(MB),
千兆字節(GB)
太字節(TB)
拍字節(PB)
的Exabyte(EB)
皆字節(ZB)
堯字節(YB)
這個函數有三個參數:bytes(字節,必須的),單位(可選的),小數點位數(可選,默認2 位)
用於格式化字節的PHP byteFormat函數
function byteFormat($bytes, $unit = "", $decimals = 2) {
$units = array('B' => 0, 'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4, 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8);
$value = 0;
if ($bytes > 0) {
// Generate automatic prefix by bytes
// If wrong prefix given
if (!array_key_exists($unit, $units)) {
$pow = floor(log($bytes)/log(1024));
$unit = array_search($pow, $units);
}
// Calculate byte value by prefix
$value = ($bytes/pow(1024,floor($units[$unit])));
}
// If decimals is not numeric or decimals is less than 0
// then set default value
if (!is_numeric($decimals) || $decimals < 0) {
$decimals = 2;
}
// Format output
return sprintf('%.' . $decimals . 'f '.$unit, $value);
}
byteFormat 例子:
echo byteFormat(4096, "B") ."\n";
echo byteFormat(8, "B", 2) . "\n";
echo byteFormat(1, "KB", 5) . "\n";
echo byteFormat(1073741824, "B", 0) . "\n";
echo byteFormat(1073741824, "KB", 0) . "\n";
echo byteFormat(1073741824, "MB") . "\n";
echo byteFormat(1073741824) . "\n";
echo byteFormat(1073741824, "TB", 10) . "\n";
echo byteFormat(1099511627776, "PB", 6) . "\n";
輸出結果:
4096.00 B 8.00 B 0.00098 KB 1073741824 B. 1048576 KB 1024.00 MB 1.00 GB 0.0009765625 TB 0.000977 PB
原文:link