正規表現
正規表現で特定の文字を置き換える際に沼った。
状況
「〇〇1階」を「〇〇1階」に変換したい。(半角を全角に)
※ 説明用のため、やりたいことに矛盾があるかもしれません。。
環境
Laravel8
起こったエラー
ときどき文字化けする。
原因
正規表現で文字コードを指定していなかった。
preg_replace_callback('/[1階]/',
function ($matches) {
// 半角を全角に変換
return mb_convert_kana($matches[0], 'N', 'UTF-8'),
},
$address);
数字の部分は簡略化して「1」と表現。
解決方法
文字コードを指定する。
今回はUTF-8とする。
'/[1階]/u'
preg_replace_callback('/[1階]/u',
function ($matches) {
// 半角を全角に変換
return mb_convert_kana($matches[0], 'N', 'UTF-8'),
},
$address);
まとめ
解決してみれば、すごく簡単なことだったが無駄に時間を浪費してしまった。