Jiniya

WEB

PHP로 바이트 포맷 - B, KB, MB, GB, TB, PB, EB, ZB, YB 변환 방법

바이트를 원하는 형식으로 포맷하는 간단한 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