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