PHP文件大小格式化函数合集


当然,我可以为你提供一个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

这些函数提供了不同级别的自定义和灵活性,以满足不同的文件大小格式化需求。