PHPで全角&半角ストリングの文字数を取得する
PHPでは英文ストリングの文字数はstrlen関数で取得することが多いですが、これでは全角文字が「2文字」として認識されてしまいます。
例:
echo strlen(“あいうえお”);//”10″が出力されます。
echo strlen(“abcde”);//”5″が出力されます。
echo strlen(“abcde”);//”5″が出力されます。
これは半角文字は1バイト、全角文字は2バイトで表されるためです。
全角文字も半角文字も「1文字」として認識させるためにはmb_strlen関数を使います。
例:
echo mb_strlen(“あいうえお”);//”5″が出力されます。
echo mb_strlen(“abcde”);//”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