首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP文件大小MB/KB转换

PHP文件大小MB/KB转换
EN

Stack Overflow用户
提问于 2011-03-31 22:26:58
回答 12查看 225.6K关注 0票数 136

如何使用MegaBytes、KiloBytes等将PHP的filesize()函数的输出转换成一种很好的格式?

像这样:

  • 如果大小小于1 MB,则显示大小(KB)
  • 如果大小在1 MB -1 GB之间,则显示大小(MB)
  • (如果大)- in GB

(GB

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-03-31 22:28:26

下面是一个示例:

代码语言:javascript
复制
<?php
// Snippet from PHP Share: http://www.phpshare.org

    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824)
        {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        }
        elseif ($bytes >= 1048576)
        {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        }
        elseif ($bytes >= 1024)
        {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        }
        elseif ($bytes > 1)
        {
            $bytes = $bytes . ' bytes';
        }
        elseif ($bytes == 1)
        {
            $bytes = $bytes . ' byte';
        }
        else
        {
            $bytes = '0 bytes';
        }

        return $bytes;
}
?>
票数 309
EN

Stack Overflow用户

发布于 2012-08-08 16:32:50

更好的是我用我找到的a plugin创建的这个版本:

代码语言:javascript
复制
function filesize_formatted($path)
{
    $size = filesize($path);
    $units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = $size > 0 ? floor(log($size, 1024)) : 0;
    return number_format($size / pow(1024, $power), 2, '.', ',') . ' ' . $units[$power];
}

来自filesize() doc的注释

由于PHP的整数类型是有符号的,并且许多平台使用32位整数,因此对于大于2 2GB

的文件,某些文件系统函数可能会返回意外的结果

票数 70
EN

Stack Overflow用户

发布于 2011-03-31 23:10:40

一种更干净的方法:

代码语言:javascript
复制
function Size($path)
{
    $bytes = sprintf('%u', filesize($path));

    if ($bytes > 0)
    {
        $unit = intval(log($bytes, 1024));
        $units = array('B', 'KB', 'MB', 'GB');

        if (array_key_exists($unit, $units) === true)
        {
            return sprintf('%d %s', $bytes / pow(1024, $unit), $units[$unit]);
        }
    }

    return $bytes;
}
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5501427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档