当然,我可以为你提供一个PHP文件大小格式化函数的合集。这些函数将帮助你将文件大小(以字节为单位)转换为更易于阅读的格式,如KB、MB、GB等。
### 1. 简单的文件大小格式化函数
这个函数将文件大小(字节)转换为KB、MB、GB等,并保留两位小数。
function formatSize($size) {
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
for ($i = 0; $size >= 1024 && $i < count($units) - 1; $i++) {
$size /= 1024;
}
return round($size, 2) . ' ' . $units[$i];
}
// 使用示例
echo formatSize(1024); // 输出: 1 KB
echo formatSize(1048576); // 输出: 1 MB
### 2. 带单位缩写的文件大小格式化函数
这个函数与上一个类似,但单位使用了缩写(B, KB, MB等),并且可以根据需要调整小数位数。
function formatSizeAbbrev($size, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
$step = 1024;
$i = 0;
while (($size / $step) > 0.9) {
$size = $size / $step;
$i++;
}
return round($size, $precision) . ' ' . $units[$i];
}
// 使用示例
echo formatSizeAbbrev(1024); // 输出: 1 KB
echo formatSizeAbbrev(1048576); // 输出: 1 MB
echo formatSizeAbbrev(1073741824, 1); // 输出: 1.0 GB
### 3. 自定义分隔符和单位的函数
这个函数允许你自定义分隔符(如逗号作为千位分隔符)和单位显示方式。
function formatSizeCustom($size, $precision = 2, $separator = ',', $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB')) {
$step = 1024;
$i = 0;
while (($size / $step) > 0.9) {
$size = $size / $step;
$i++;
}
// 使用number_format添加千位分隔符
return number_format(round($size, $precision), 0, '.', $separator) . ' ' . $units[$i];
}
// 使用示例
echo formatSizeCustom(10485760); // 假设默认设置,输出: 10,000 KB
// 可以自定义分隔符和单位
echo formatSizeCustom(1073741824, 1, '.', array('Bytes', 'KBytes', 'MBytes', 'GBytes', 'TBytes', 'PBytes')); // 输出: 1.0 GBytes
这些函数提供了不同级别的自定义和灵活性,以满足不同的文件大小格式化需求。