どうもお久しぶりです。Reoです。
2ヶ月ぶりの更新・・・!ナンテコッタ
今日は慣れないPHP作業で、少し行き詰まった話をしていこうと思います。
とある文字列から特定の文字を置き換える時にstr_replaceという関数を用います。
例えば
//この文字列の〜の部分を置き換えたい
$hoge = "2017/7/23〜2017/7/24";
//〜を・に置き換えたい
$newHoge = str_replace("~","・",$hoge);
//結果
echo $newHoge . "\n";
この結果が2017/7/23・2017/7/24になって欲しいのに、そうならない時があるんですね。
わたしが引っかかったのは角括弧[]と波ダッシュ〜なんですが、こいつら同じ括弧や波に見えて、何種類か種類があるんですね。
HTML数値文字参照変換でチェックできるのですが、
同様に、[と[は違う括弧なんですね。
括弧の方は違うってわかりますが、波はもう一緒じゃねーかって感じです・・・。
フォントが違えばさらにわかりづらくなるんですが、こいつらは別物として扱われてしまうので、〜を・に置き換えようとした時に、引っかからない・・・。
対応策は当てはまるまで試してみるしかワカラナイ!!
//この文字列の〜の部分を置き換えたい
$hoge = "2017/7/23〜2017/7/24";
//〜を・に置き換えたい
$newHoge = str_replace(array("~","〜"),"・",$hoge);
//結果
echo $newHoge . "\n";
どっちも置き換え対象にしてやることでとりあえずは解決したんですが、こうするしかないのかしらん。
もっといい方法がありそうな気がするけれどどうなんでしょう。
文字コード問題なのでPHPに限らずなんでしょうが、
同様の問題に引っかかった方は、対応の文字とstr_replaceで置き換えようとしている文字の文字参照を調べてみてください〜〜。
str_replaceに限らず、strposとかexplodeとか文字判定を行うものだと同様の問題が起こるので、疑ってみてください。
2ヶ月ぶりの更新ですが別にサボってたわけじゃないですヨ!!!!!
リアルではとにかくメチャクチャいろんなことがあった気がします。
またしばらくはPC作業ができるので、ブログ更新頻度もぼちぼちあげていきます〜。
ではでは。
Additional Notes追記
PHPも一度まともに勉強してみたい。
コメントはありません。
現在コメントフォームは工事中です。