strlenは文字列の長さを取得する関数で戻り値はバイト数らしい。
そして、mb_strlenはマルチバイトを考慮して文字列の長さを取得できるそうだ。
こんな感じ。
[php]print(mb_strlen("あ"));
//出力 1
print(mb_strlen("あいう"));
//出力 3[/php]
けれど、ローカルのxamppでは以下の値を取得してしまった。
[php]print(mb_strlen("あ"));
//出力 3
print(mb_strlen("あいう"));
//出力 9[/php]
phpの内部エンコーディングと合わない時にそうなるみたいで、
解決法はmb_strlen()関数の第2引数に文字エンコードを指定すれば良いみたい
[php]
print(mb_strlen("あ","utf-8"));
//出力 1
[/php]
あーびっくりした。
コメント