タグ

2010年7月18日のブックマーク (1件)

  • 21. mb_strlen()関数の落とし穴

    mb_strlen()関数は、日語などのマルチバイト文字列の文字数をカウントする関数ですが、気をつけて使わないと思わぬバグの原因になってしまうことがあります。 <?php $str = '日語にほんご'; var_dump(mb_strlen($str)); ?> このスクリプトを実行すると、多くの場合は int(7) と、正しい結果が表示されますが、環境によっては int(12)やint(9)など、変な値が表示されてしまう場合があります。 これは、PHPの内部エンコーディングが文字列のエンコードと異なっている時に 起こります。 <?php $str = '日語にほんご'; var_dump(mb_strlen($str, 'SJIS')); ?> というように、mb_strlen()関数の第2引数に$strの文字エンコードを指定す ると、PHPの内部エンコーディング設定に関わらず正

    21. mb_strlen()関数の落とし穴
    makoto_69
    makoto_69 2010/07/18
    mb_strlenを使う時は文字エンコードも指定しといたほうがいい