[PHP]ファイル容量(Byte)をメガバイト(MB)、ギガバイト(GB)などの単位で表す

Pocket

PHP の関数 filesize() などで取得したファイルサイズの単位はバイトなので、容量に合わせてメガバイト、ギガバイト、テラバイトなどの単位系で表すために関数を作りました。
1KB = 1024B の計算で、桁数によって単位が切り替わります。

引数は、byte_format(容量, 小数点以下の桁数, カンマ区切り) となっています。

登録されている単位を超える場合は「1000PB」のようになります。
環境によってはあまり大きな数値を扱えない可能性があります

<?php
$size = 109951162777600;
echo byte_format($size, 2, true);

function byte_format($size, $dec=-1, $separate=false){
	$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
	$digits = ($size == 0) ? 0 : floor( log($size, 1024) );
	
	$over = false;
	$max_digit = count($units) -1 ;

	if($digits == 0){
		$num = $size;
	} else if(!isset($units[$digits])) {
		$num = $size / (pow(1024, $max_digit));
		$over = true;
	} else {
		$num = $size / (pow(1024, $digits));
	}
	
	if($dec > -1 && $digits > 0) $num = sprintf("%.{$dec}f", $num);
	if($separate && $digits > 0) $num = number_format($num, $dec);
	
	return ($over) ? $num . $units[$max_digit] : $num . $units[$digits];
}
実行結果: 100.00TB

Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です