strlenで値がおかしくなる

どうやらUTF-8に対してstrlenを使用するとバイト数がおかしくなるらしい。

UTF-8は文字によってバイト数がバラバラで、1~6バイトまであるそうな。

どうやらこれが原因らしい。

なのでstrlenを使用して「2バイトなら全角、1バイトなら半角」の様な判定をしようとするとうまくいかない。

なので下記の様に一度sjisに変換してstrlenを使用すると正常なバイト数が取得できる。

strlen(mb_convert_encoding($str,”UTF-8″,”SJIS”));[/ode]

■追記

mb_strlen()という関数があるというコメントを頂きました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です