前回の記事「PHPは特定の長さの部分文字列を*記号に変える方法」では、特定の長さの部分文字列を*記号に置換する方法である文字列置換を紹介しました。今回は文字列の理解の続きとして、中国語の文字列の長さ、または中国語と英語が混在した文字列の長さを計算する方法を紹介します。
中国語の文字列の長さを計算するにはどうすればよいですか?この問題に関して、最初に strlen() 関数を使用することになるかもしれませんが、strlen() 関数はすべて英語の文字列の処理には適していますが、中国語と英語が混在した文字列や純粋な中国語の文字列の場合は機能しません。 。次の例を見てみましょう:
<?php header("Content-type:text/html;charset=utf-8"); //设置字符编码为utf-8 $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.strlen($str).'<br>'; ?>
出力結果は次のとおりです:
次の理由により、strlen() 関数は正確ではないことがわかります。文字処理の異なるルールに従う中国語と英語が混在した文字列、または純粋な中国語の文字列の長さを返します。では、なぜ 27 が返されるのでしょうか?
これは、使用する文字エンコーディングが utf-8 であり、UTF-8 エンコーディングでは中国語の文字が 3 バイトを占めるためです。
strlen() 関数 ASCII コードでは、1 つの中国語文字は 2 バイトのスペースを占めます。UTF-8 エンコードでは、1 つの中国語文字 (繁体字中国語を含む) は 3 バイトに相当します。Unicode では、エンコード中です。 、中国語 (繁体字を含む) 1 文字は 2 バイトに相当します。
上記の例では、文字列「PHP 中国語 Web サイトへようこそ!
」の 1 つに、8 つの中国語文字と 3 つの英語文字が含まれており、その後、8 *3 3 となります。 =27
バイトの場合、文字列の長さは 27 になります。
しかし、そのような文字列の長さは私たちが望むものではありません。中国語の文字を処理し、中国語と英語が混在した文字列、または純粋な中国語の文字列の長さを正確に計算するにはどうすればよいでしょうか?
PHP は、この問題を解決するための関数、mb_strlen() 関数 を提供します。
引き続き前の例ですが、今回は mb_strlen() 関数を使用して文字列の長さを計算します:
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
出力結果は次のとおりです:
文字列 $str
には中国語と英語の感嘆符が 11 個あり、出力結果も 11 であることがわかります。ちなみに、私は適切な人を見つけました~
mb_strlen()関数は、漢字でも英語でも、数字、小数点、下線、スペースを1バイトしか消費しません。
mb_strlen() 関数を簡単に見てみましょう。
mb_strlen($string,$encoding)
この関数は、文字エンコーディングを設定することで、対応する文字数を返すことができます。この関数は、必須パラメータ $string (必要な文字列) を受け取ります。検出された) および a 省略されたパラメータ $encoding
(文字エンコーディング)。省略された場合、内部文字エンコーディングが使用されます。
対応する $encoding
パラメータを設定することで、中国語の文字列の長さの問題を適切に処理できます。
わかりました。これですべてです。他に知りたいことがある場合は、これをクリックしてください。 → →php ビデオチュートリアル
最後に、古典的なコース「PHP 文字列処理 (翡翠少女般若心経編)」を読むことをお勧めします。無料です。ぜひ学んでください。 !
以上が中国語の文字または混合文字の長さを返す方法を学習する PHP 文字列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。