ちゃんと覚えておけよ?

忘れちゃいけない事のメモ、覚え書き

PHPのstrlen関数で全角文字が3バイトになる対策方法

通常「あ」のような全角テキストは2バイトになるはず。

だが以下のような方法では、3バイトになってしまう。

$volm = strlen($data);

$data:バイト数を取得したいデータ
$volm:データ長(byte)

では、どうやって対策するかというと、

文字コードを計測する際に以下のようにShift-Jisにしてstrlenすること。

echo( strlen( mb_convert_encoding( $str, ‘SJIS’, ‘UTF-8′ ) ) );

UTF-8のままですと、全角文字は2バイトにはなりません。
しかも、正しく文字コードをしてあげないと正しい文字数になりません。

一旦、シフトJISに変換してあげて、mb_stringではないstrlen()で全角文字を2バイトで計算してくれます。

他所のサイトでは、以下のように紹介しましたが、コレではダメでした。

$volm = strlen(bin2hex($data)) / 2;

Comment

*