phpでマルチバイト文字列をバイト数で切り出す場合は、mb_strcut()を使用する。
substr()だと文字化けすることがある。
「あ」が3byteだとすると、1byte目や2byte目までで切り出した場合に文字化けする。
文字化けするパターン
例)文字コードutf8の場合
$a = 'aaあああ'; var_dump(mb_strcut($a, 0, 3)); //出力内容:aa var_dump(mb_strcut($a, 0, 4)); //出力内容:aa var_dump(mb_strcut($a, 0, 5)); //出力内容:aaあ $a = 'aaあああ'; var_dump(substr($a, 0, 3)); //出力内容:aa� var_dump(substr($a, 0, 4)); //出力内容:aa�� var_dump(substr($a, 0, 5)); //出力内容:aaあ
mb_strcutについて
(PHP 4 >= 4.0.6, PHP 5)
mb_strcut — 文字列の一部を得る
string mb_strcut ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
パラメータ | ||
---|---|---|
返り値 |
mb_strcut() は、 start および length パラメータで指定した str の一部を返します。 |
|