特定の文字列を取得してきて、それを特定の条件で加工し、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,"/")."/");
これでいいんですね!無事にエラーが止まりました。
あまり使う機会がないので勉強になりました。