mb_strlen()で変な値が返ってくる時は文字エンコードを指定する。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

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]

あーびっくりした。

参考 / 21. mb_strlen()関数の落とし穴 – PHP TIPS:ITpro

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメント

  1. スーパーコピー 後払い com より:

コメントを残す


You can add images to your comment by clicking here.