特定の文字列を取得してきて、それを特定の条件で加工し、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,"/")."/");

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

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

コメント