ホームページ  >  記事  >  バックエンド開発  >  PHPの組み込み関数strlenとmbstringの拡張関数mb_strlenの違いの分析

PHPの組み込み関数strlenとmbstringの拡張関数mb_strlenの違いの分析

不言
不言オリジナル
2018-07-16 09:21:021927ブラウズ

この記事では、PHP 組み込み関数 strlen と mbstring 拡張関数 mb_strlen の違いを主に紹介します。これには、ある参考値があります。共有します。必要な友人は参照してください

#例

$str_uncode = "简体中文Chinese(Simplified)";
//统计字符串长度
echo strlen($str_uncode).&#39;<br>&#39;;//结果:31
echo mb_strlen($str_uncode, &#39;UTF-8&#39;).&#39;<br>&#39;;结果:23
echo mb_strlen($str_uncode, &#39;GBK&#39;).&#39;<br>&#39;;结果:25
echo mb_strlen($str_uncode, &#39;GB2312&#39;).&#39;<br>&#39;;结果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 を使用して URL デッドリンクをスキャンする方法

PHP で var_export を使用する方法

以上がPHPの組み込み関数strlenとmbstringの拡張関数mb_strlenの違いの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。