바이트를 원하는 형식으로 포맷하는 간단한 PHP 함수. 가능한 단위 옵션은 다음과 같습니다.
- 바이트 (B)
- 킬로 바이트 (KB)
- 메가 바이트 (MB)
- 기가 바이트 (GB)
- 테라 바이트 (TB)
- 페타 바이트 (PB)
- 엑사 바이트 (EB)
- 제타 바이트 (ZB)
- Yottabyte (YB)
함수는 세 개의 매개 변수를 취합니다 (필수 바이트, 단위 선택, 소수 자릿수).
바이트 포맷을위한 PHP byteFormat 함수
<?php
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);
}
?>
사용예
<?php
echo byteFormat(4096, "B");
echo byteFormat(8, "B", 2);
echo byteFormat(1, "KB", 5);
echo byteFormat(1073741824, "B", 0);
echo byteFormat(1073741824, "KB", 0);
echo byteFormat(1073741824, "MB");
echo byteFormat(1073741824);
echo byteFormat(1073741824, "TB", 10);
echo byteFormat(1099511627776, "PB", 6);
?>
결과
4096.00 B
8.00 B
0.00098KB
1073741824 B
1048576KB
1024.00MB
1.00GB
TB 0.0009765625
0.000977 PB