php preg_replaceで文字化け
2011/04/18
preg_replace()で全角スペースを削除しようとした。
$str = ' メロス は 激怒 した。';
$str = preg_replace('/^[ ]+/', "", $str);
$str = preg_replace('/^[ ]+/', "", $str);
上記のような感じ。
これだと「メロス」って箇所が「。罸羯」っていう風になる。
調べると下記のようにすれば良いらしい。
$str = ' メロス は 激怒 した。';
$str = preg_replace('/^[ ]+/u', "", $str);
$str = preg_replace('/^[ ]+/u', "", $str);
preg_replace()のまとめ
「utf-8」で「preg系の関数(preg_replace()など)」を使うときは「パターン修飾子として"u"」を指定する。