PHPにおいての関数「strlen」と「mb_strlen」の違いを知っていますか?知らないと落とし穴に落ちますので、しっかりと理解しましょう。初めに言っておきますが、「mb_strlen」これ一本でOKです。
strlen
まず、私は「strlen」というのは文字列の文字数を返す関数だと思っていました。っていうか、そう書いていました。いや、むしろ間違いではありませんが認識を間違うと大変なことになるのです。実際、アルファベットを「strlen」で返すと’abc’は「3」です。しかし、日本語の’あいう’では「9」になります。
- echo strlen('abc');
- // => 3
- echo strlen('あいう');
- // => 9
よく調べてみると、「strlen」は文字のバイト数を返す関数だということです。半角は1バイト、全角は2バイト。
???
違くない?’あいう’は9ってでたよ。さらに調べると文字や設定によってバイト数が違うのだということがわかりました。便利だと思っていた「strlen」って結構やっかいでした。
mb_strlen
ここで救世主の登場です。その名も「mb_strlen」です。
文字のカウントなら必ずこちらを使うようにしましょう。実際に使ってみた例です。
- echo mb_strlen('abc');
- // => 3
- echo mb_strlen('あいう');
- // => 3
- echo mb_strlen('aあ亜☆');
- // => 4
ありがとう「mb_strlen」!
きちんと正しく使用しましょう。もう一度確認しますが文字列の文字数を調べる時には「mb_strlen」です。
コメント
[…] 関連記事 文字の長さを把握しようPHP […]