特定の文字列を取得してきて、それを特定の条件で加工し、mysqlへ加工する…そんなことをしようとしてました。そんな時、スクリプトがwarningをだしていることに気づく。加工に使っていたのは、preg_replaceです。その箇所でエラーが…なぜかな。。と思ったら/(スラッシュ)がクオートされていないのが原因でした…

preg_quoteは、/(スラッシュ)をクオートしていない

以下のような感じで、文字列をクオートしてpreg_replaceしてました

$tmp=preg_replace("/".preg_quote($word)."/");

これでいけてると思っていたが、どうも$wordの中に、/(スラッシュ)が入っていたらしく、その影響でエラーが出ていたらしい。あれ?どうしたらいいん?/(スラッシュ)をreplaceする必要があるの。。。?

preg_quoteの第二引数にデリミタを指定することで/(スラッシュ)もquoteできる!

よくよく調べてみると、preg_quoteはクオートする文字列を第二引数で追加できるとのこと。であれば、/(スラッシュ)も追加しておけばいいようでしたので、追加してみます。

$tmp=preg_replace("/".preg_quote($word,"/")."/");

これでいいんですね!無事にエラーが止まりました。

あまり使う機会がないので勉強になりました。

コメント

最高 観光サイト! 応援してます! <a href=https://iqvel.com/ja/a/%E3%82%B3%E3%82%B9%E3%82%BF%E3%83%AA%E3%82%AB/%E3%83%88%E3%83%AB%E3%83%88%E3%82%A5%E3%82%B2%E3%83%AD%E5%9B%BD%E7%AB%8B%E5%85%AC%E5%9C%92>自然の回廊</a> リスク&安全特集 — 強力な基盤。