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()関数の落とし穴](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)