mb_substr マルチバイト部分文字列の罠
UTF-8環境で奇妙なトラブルがあったのですが、
$str = "あいう"; echo mb_substr($str,0,1); // 「あ」だけ表示するはずが・・・文字化け
これで0番目から1文字取り出せるはずが わけのわからない文字コードが出力されて文字化けしてしまいました。
文字によっては0,2にしてみたら表示されたりされなかったり不安定です。
で、3番目の引数があったことを思い出して
$str = "あいう"; echo mb_substr($str,0,1,"utf-8"); // 「あ」と表示されました!
に変えると一気に解決しました!なるほど内部エンコードがEUCなのでUTF-8で処理するための指定がいるんですねぇ。
気づかなかった時間を損した気分。
どうやら mb_substr() だけに限らず mb_strcut() などでも同様のようです。