この記事では、PHP 組み込み関数 strlen と mbstring 拡張関数 mb_strlen の違いを主に紹介します。これには、ある参考値があります。共有します。必要な友人は参照してください
#例
$str_uncode = "简体中文Chinese(Simplified)"; //统计字符串长度 echo strlen($str_uncode).'<br>';//结果:31 echo mb_strlen($str_uncode, 'UTF-8').'<br>';结果:23 echo mb_strlen($str_uncode, 'GBK').'<br>';结果:25 echo mb_strlen($str_uncode, 'GB2312').'<br>';结果27
結果分析:
strlen 漢字を 3 バイトとしてカウントします (複雑な中国語文字は 4 バイトとしてカウントされます)
mb_strlen 'UTF- 8' 中国語の文字のエンコーディングは 1 バイトとして計算されます
PHP の組み込み文字列長関数 strlen は中国語の文字列を正しく処理できません。文字列が占有するバイト数のみを取得します。 GB2312 中国語エンコードの場合、strlen によって取得される値は中国語の文字数の 2 倍ですが、UTF-8 エンコードされた中国語の場合、その差は 3 倍になります (UTF-8 エンコードでは、1 つの中国語文字は 3 バイトを占めます)。
mb_strlen 関数を使用すると、この問題をより適切に解決できます。 mb_strlen の使用法は strlen と似ていますが、文字エンコーディングを指定する 2 番目のオプションのパラメーターがある点が異なります。たとえば、UTF-8 文字列 $str の長さを取得するには、mb_strlen($str,'UTF-8') を使用できます。
2 番目のパラメータを省略した場合は、PHP の内部エンコーディングが使用されます。内部エンコーディングは、mb_internal_encoding() 関数を通じて取得できます。
mb_strlen は PHP のコア関数ではありません。使用する前に、php_mbstring.dll が php.ini にロードされていること、つまり、「extension=php_mbstring.dll」という行が存在することを確認する必要があります。とコメントアウトされていない場合、エラーメッセージが表示されます 関数の定義の問題。
以上がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がPHPの組み込み関数strlenとmbstringの拡張関数mb_strlenの違いの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。