PHP では、strlen() 関数を使用して文字列内のバイト数を計算できます。この関数は、文字列の長さをバイト単位で計算し、その文字列が占める文字長 (バイト数) をカウントできます。構文は「strlen (string)」です。この関数の計算では、英語のカンマ、数字、英字、小数点などは 1 バイトのみを占有しますが、GB2312 でエンコードされた漢字は 2 バイト、UTF-8 でエンコードされた漢字は 3 バイトを占有します。
このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、DELL G3 コンピューター
php のさまざまなエンコード形式によって占有される文字バイトは異なります:
ANSI エンコード形式では、1 つの中国語文字が 2 バイトを占め、1 つの英語文字が 1 バイトを占めます。
UTF -8 エンコーディング形式: 1 つの中国語文字が 3 バイトを占有し、1 つの英語文字が 1 バイトを占有します。
#PHP では、strlen() 関数を使用して文字列内のバイト数を計算できます。
strlen() 関数は、文字列の長さをバイト単位で計算します。
strlen($string)
この関数は 1 つのパラメーター $string (計算される文字列) のみを受け入れ、このパラメーターに渡された値が空の場合は 0 を返します。
strlen() 関数では、(英語モードでは) カンマ、数字、英字、小数点 .
、アンダースコア、スペースなどは 1 つだけを占めます。文字の長さ (バイト)。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello world!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
分析: 上記の例の文字列には、10 個の英字、スペース、および英語の感嘆符があり、合計は 12 バイトです。
strlen() 関数では、GB2312 でエンコードされた中国語文字は長さ 2 文字 (バイト) を占め、UTF-8 でエンコードされた中国語文字は長さ 3 文字 (バイト) を占めます。 )。
<?php header("Content-type:text/html;charset=utf-8"); $str = "!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
上記の例では、「!」は中国語の感嘆符であるため、3 バイトを占めます。
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
#上記の例では、漢字が 2 文字含まれているため、6 バイトを占有します。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello,欢迎来到这里!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
上記の例では、英語 5 文字、中国語 6 文字、中国語の感嘆符、カンマが 1 つ含まれているため、5 (8*3) = を占めます。 29キャラ祭り。
注: 文字列内の文字数を計算する場合、strlen() 関数は英語の文字列のみを処理でき、中国語または中国語と英語の混合文字列には適していません。このとき、
文字 に基づいて文字列の長さを計算できる mb_strlen() 関数を使用する必要があります。
拡張知識: mb_strlen() 関数
mb_strlen() 関数は文字列の長さを返すこともできます。構文形式は次のとおりです:
mb_strlen($str [, $encoding = mb_internal_encoding()])
$str は、長さを計算する必要がある文字列です
$encoding は、文字エンコーディングであるオプションのパラメータです。省略した場合、内部文字エンコーディングが使用されます。
mb_strlen() 関数の戻り値は、$encoding エンコーディングを使用した文字列 $str に含まれる文字数です。$encoding が無効な場合は、false が返されます。
注: strlen() 関数とは異なり、mb_strlen() 関数では、漢字、英語、数字、小数点、アンダースコア、スペースのいずれであっても、長さは 1 文字のみを占めます。
[例] mb_strlen()関数を使用して文字列長を取得します。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello 你好!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,"utf-8").'<br>'; $str = "欢迎来到PHP中文网!"; echo '<br>字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
対応する $encoding
パラメータを設定することで、中国語の文字列の長さの問題をうまく処理できることがわかります。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPで文字列が占めるバイト数を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。