UTF-8 で半角・全角を数えるには一度 Shift-JIS に変換から行う

UTF-8 でマルチバイト文字は3バイトとして数えられます。PHP の strlen で数える場合に、英数字なら1バイトですが、日本語などのマルチバイト文字だと3バイトが帰ってきて、半角・全角の計算が難しくなります。

対処方法としまして、最近思いついたんですが、一度文字列を Shift-JIS に変換してから文字数の計算を行います。

1
strlen(mb_convert_encoding($bar, "sjis"));

こうすることで、マルチバイト文字は2バイト、半角英数字なら1バイトで取得できるようになり、半角・全角の計算を行えます。半角・全角なんて久しぶりに聞きましたが、拘る人は拘るようなので、ひとつ覚えておきたいところですね。

コメント

コメントは受け付けていません。