現在の位置: ホーム> 最新記事一覧> PHPのstrlenおよびmb_strlen文字列長関数の違いと使用方法

PHPのstrlenおよびmb_strlen文字列長関数の違いと使用方法

gitbox 2025-06-27

導入

PHP開発では、処理文字列は非常に一般的な操作であり、文字列の長さを取得することはその重要な部分です。 PHPは、文字列の長さを取得するさまざまな方法を提供します。最も一般的に使用されるのは、strlen()mb_strlen()です。この記事では、これら2つの機能の使用とそれらの違いを詳細に紹介し、開発者が適用可能な機能をより合理的に選択できるようにします。

strlen()関数

strlen()は、文字列のバイト長を返すためにPHPに組み込み関数です。英語のキャラクターまたはUTF-8エンコーディングの下で​​特殊文字を含まない文字列に適しています。

strlen()の使用


$str = 'Hello world!';
$length = strlen($str);
echo $length;

出力の結果は次のとおりです。

12

strlen()について注意すべきこと

strlen()は文字の数ではなくバイト数を計算するため、得られた結果は中国語または他のマルチバイト文字では正確ではない可能性があることに注意する必要があります。この関数を使用すると、英語以外の文字を含む文字列を処理すると、論理エラーが発生する可能性があります。

MB_STRLEN()関数

MB_STRLEN()関数は、UTF-8などのマルチバイトエンコードに適したマルチバイト文字列処理機能の一部であり、中国語や日本語などの非ASCII文字の数を正確にカウントできます。

mb_strlen()の使用


$str = 'こんにちは,世界!';
$length = mb_strlen($str, 'UTF-8');
echo $length;

出力の結果は次のとおりです。

7

mb_strlen()のパラメーター説明

MB_STRLEN()は2つのパラメーターを受信します。

  • 最初のパラメーターは、長さで計算する必要がある文字列です。
  • 2番目のパラメーターはオプションのエンコード形式であり、 MB_INTERNAL_ENCODING()によって返されるエンコードはデフォルトで使用されます。

mb_strlen()に関するメモ

MB_STRLEN()はマルチバイト文字列を正しく処理できますが、純粋な英語またはシングルバイト文字を処理すると、そのパフォーマンスはStrlen()よりわずかに劣っています。したがって、Multibyte文字が関係しない場合、 Strlen()を使用することがより効率的です。

strlen()とmb_strlen()の違い

2つの最大の違いは、文字エンコードを処理する機能です。

  • strlen()は、 ASCIIまたは単純なUTF-8エンコードされた文字列に適したバイト数を返します。
  • MB_STRLEN()は、特に中国語と日本の環境でマルチバイト文字を処理するのに適した文字数を返します。

処理された文字列に中国語または他の特殊文字が含まれている場合、最初にMB_STRLEN()関数を使用して、文字統計の精度を確保することをお勧めします。

要約します

PHP開発では、文字列長関数を合理的に選択することが重要です。英語の文字のみを含む文字列の場合、 strlen()を使用します。ただし、中国語または他のマルチバイト文字が関与している場合、 MB_STRLEN()を使用して正しい数の文字を取得する必要があります。これら2つの機能の使用をマスターすると、コードの安定性と互換性が向上します。