PHP 的字节格式化函数:byteFormat

2023-04-15 10:28:14 浏览数 (3)

一个简单的 PHP 函数,可以将字节(bytes)转换成想要的格式,可以使用以下的单位::

Byte (B) Kilobyte (KB) Megabyte (MB) Gigabyte (GB) Terabyte (TB) Petabyte (PB) Exabyte (EB) Zettabyte (ZB) Yottabyte (YB)

这个函数有三个参数:bytes(字节,必须的),单位(可选的),小数点位数(可选,默认 2 位)

PHP byteFormat function for formatting bytes

代码语言:javascript复制
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 例子:

代码语言:javascript复制
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";

输出结果:

代码语言:javascript复制
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

0 人点赞