PHP中字符串的字节大小

时间:2014-11-07 19:34:22

标签: php database string

我有一个加密的图像,在保存之前我想知道它占用了多少空间。我可以通过strlen($img)mb_strlen($img)获取字符数,但我希望获得16KiB(或KB)这样的数字。

然后我以MySQL格式将字符串保存到blob数据库中,在那里我可以使用PhpMyAdmin查看它的大小。

修改 如果我使用strlen来获取字符串的字节大小(我想要的),我会得到与MySQL数据库中显示的字节大小不同的值(其中字符串不是保存为char而是保存为博客,意思是二进制)。怎么会这样?如何在数据库中保存字符串时,我怎样才能知道二进制大小的大小。

我只使用MySQL命令

保存字符串

INSERT INTO table (content, bla) VALUES ($string, bla); (不完全正确,但为了示例目的 - 这在正确的情况下有效)

现在,当我查看我的数据库时,它显示了一个大小,例如315 KB,但是当我接受$string并对其执行strlen时,它返回类似240000(与KB中的位不同)

我会调查自己......

1 个答案:

答案 0 :(得分:1)

这与Dany的回答基本相同,但更为紧凑。

function human_filesize($bytes, $decimals = 2) {
    $size = array('B','kB','MB','GB','TB','PB','EB','ZB','YB');
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
}

echo human_filesize(filesize($filename));

来源:http://jeffreysambells.com/2012/10/25/human-readable-filesize-php