BLOG

  1. HOME
  2. BLOG
  3. PHP UTF-8でマルチバイト文字列を扱うときに注意

PHP UTF-8でマルチバイト文字列を扱うときに注意2014/09/01

よく文字列をループで連結して、最後の区切り文字を消したい場合があります

substrは文字数でなくバイト数を切り取るのでマルチバイト文字の時は注意が必要

 

$hoge = “あいうえ×”;//最後の一文字を取りたい
substr($hoge, 0, -1);//これだと最後の文字が文字化けするので
substr($hoge, 0, -2);//こうなる
$hoge = “あいうえ・”;//ところがこの区切り文字だとうまくいかない
substr($hoge, 0, -3);//これだとうまくいった

“・”は3バイトだったのか!

ちょっとぐぐったらここが参考になりそう
http://hamamuratakuo.blog61.fc2.com/blog-entry-421.html