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スクリプトによって割り当てられたメモリの量です。これは、パーサー内で、文字列と文字列の値にメモリを割り当てていることを意味します。結果として、変数を設定する前後のこの値は、予想よりも高くなります。

たとえば、文字列: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

文字は1バイトなので、文字列の長さを確認してください。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;

これは、任意のタイプの変数を使用している場合に適しています。

于 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を使用できます。これは、任意のPHP変数のサイズをバイト単位で取得するための
関数を提供します。 PHP変数の合計サイズを計算するには、より正確なツールである必要があります。var_sizeof()
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 に答える