28

如果我在 PHP 中有以下变量:

$Message='Hello, this is just test message';

如何获取其内容的大小(以字节为单位)?例如,要打印如下内容:

<p>Message size is 20KB</p>
4

6 回答 6

60

strlen返回字符串中的字节数,而不是字符长度。在此处查看 PHP 手册。

仔细看:

笔记:

strlen() 返回字节数而不是字符串中的字符数。

如果将结果乘以 8,则可以得到位。

这是一个可以轻松为您计算数学的函数。

function strbits($string){
    return (strlen($string)*8);
}

请注意,如果您使用,,memory_get_usage()您将返回错误的值。内存获取使用量是 PHP 脚本分配的内存量。这意味着,在其解析器中,它为字符串和字符串的值分配内存。因此,设置 var 前后 this 的值会高于预期。

例如,字符串:Hello, this is just test message产生以下值:

Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits

这是代码:

<?php
$mem1 = memory_get_usage();
$a = 'Hello, this is just test message';

echo "Memory (non-real): ". (memory_get_usage() - $mem1)."\n";
echo "Strlen: ". strlen($a)."\n";
echo "Strlen * 8bits: ". (strlen($a) * 8)."\n";
于 2012-07-06T17:30:44.587 回答
8

一个字符是一个字节,所以只需检查字符串长度。如果需要以 KB 为单位除以 1024(准备小数点)。

<?php echo "Message size is ".strlen($Message)."B"; ?>
于 2012-07-06T16:54:12.993 回答
6
$start_memory = memory_get_usage();
$foo = "Some variable";
echo memory_get_usage() - $start_memory;

如果您正在使用任何类型的 var,这很好。

于 2012-07-06T16:53:16.703 回答
5

strlen()返回字符串中的字节数。

编辑:(来自 PHP 手册页)

注意:
strlen()
返回字节数而不是字符串中的字符数。

注意:
strlen()
在数组上执行时返回 NULL,并发出 E_WARNING 级别的错误。

于 2012-07-06T16:50:59.550 回答
1

您应该使用字符串长度函数:

strlen($Message)

您还应该查看 php 手册: http: //php.net/manual/en/function.strlen.php

于 2012-07-06T16:52:07.473 回答
0

您可以使用https://github.com/mrsuh/php-var-sizeof
它提供var_sizeof()了以字节为单位获取任何 PHP 变量大小的函数。
计算 PHP 变量总大小的工具必须比memory_get_usage().

<?php

require_once __DIR__ . '/vendor/autoload.php';

$message='Hello, this is just test message';

printf("\$message size is %d bytes\n", var_sizeof($message));
$message size is 48 bytes
于 2022-02-18T21:23:35.083 回答