質問: 以下のようにPHPで正規表現で置換をしたいと思っていますが、思ったようになりません。 お力添えいただけますでしょうか。 []内はイメージです。 ``` $content="ごみはごみ箱に。ごみ箱のごみを捨てます。捨てるのはごみ、段ボールです。"; $key="ごみ"; $content=preg_replace('/'.$key.'([は、を])/',"ゴミ$1",$content,1); ``` 求める結果は、 ``` ゴミはごみ箱に。ごみ箱のゴミを捨てます。捨てるのはゴミ、段ボールです。 ``` となります。 $keyに続く文字列が「は、を」のみにヒットさせ、それ以外の「ごみ箱」などにはヒットさせないようにしたいのですが、どのようにすればよろしいでしょうか。 よろしくお願いいたします。
回答: `preg_replace`の第三引数の`1`は、「先頭の1カ所だけ置換」という意味ですが、意図は合っていますか? それを省略して回数無制限にすると、他の部分は修正無しで、意図通りに動いているように思います。 一応、正規表現には`u`修飾子を付けておいた方が良いと思います。 ``` $content=preg_replace('/'.$key.'([は、を])/u',"ゴミ$1",$content); ```