【问题标题】:Byte size of string in PHP [duplicate]PHP中字符串的字节大小[重复]
【发布时间】:2015-01-04 16:28:15
【问题描述】:

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

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

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

我只是用 MySQL 命令保存字符串

INSERT INTO table (content, bla) VALUES ($string, bla); (不完全正确,但出于示例目的——正确时有效)

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

我会调查我自己...

【问题讨论】:

  • @CurtisMattoon 不,不是,如果有解决方案,我会很高兴。但这需要我知道文件/字符串的大小,但我想找出大小本身。
  • OP 标记为重复的愿望已经实现;)

标签: php database string


【解决方案1】:

这与丹尼的回答基本相同,但更紧凑。

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

【讨论】:

  • 我现在明白了,我做错了转换。我输入了这个,现在它和数据库中的一样。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 2016-03-28
  • 2017-04-22
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
相关资源
最近更新 更多