PHPで全角&半角ストリングの文字数を取得する

  • by
  • プログラミング
  • コメントなし

PHPでは英文ストリングの文字数はstrlen関数で取得することが多いですが、これでは全角文字が「2文字」として認識されてしまいます。
例:

echo strlen(“あいうえお”);//”10″が出力されます。
echo strlen(“abcde”);//”5″が出力されます。

これは半角文字は1バイト、全角文字は2バイトで表されるためです。

全角文字も半角文字も「1文字」として認識させるためにはmb_strlen関数を使います。
例:

echo mb_strlen(“あいうえお”);//”5″が出力されます。
echo mb_strlen(“abcde”);//”5″が出力されます。

正しく動作しない場合
なお、動作させるサーバーのPHPの内部エンコーディングは”UTF-8″でないと正しく動作しない可能性があります。内部エンコーディングは.htaccessファイルやmb_internal_encoding関数で設定することが可能ですが、php.iniであらかじめ設定しておくと手っ取り早いです。

php.iniファイルにmbstring.internal_encodingが”EUC-JP”とかではなく、以下のように”UTF-8″として設定されていることをご確認ください。
mbstring.internal_encoding = UTF-8

  • by
  • プログラミング
  • コメントなし

Leave a Reply

Your email address will not be published. Required fields are marked *