- ベストアンサー
文字列全体に対する置き換え [正規表現]
正規表現での文字列全体に対する、マッチ箇所 への置き換えについて、アドバイスをもらえないでしょうか。 parlでいうg修飾子はphpには無く、 例えば、[preg_match]は[preg_match_all]という関数で対応出来ますが、 置き換えを行う[preg_replace]には[preg_replace_all]がありません。 それに類する関数も無いように思います。 これに関して、PHPではどのように対応すれば良いのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>[preg_replace_all]がありません。 preg_replace()で第4引数がなければ全部置き換えですから・・・ <? $str=<<<eof hoge1 hoge2 hoge3 hoge4 hoge5 eof; print preg_replace("/hoge/s","fuga",$str); ?> ちなみに第4引数があるとこんな感じ <? $str=<<<eof hoge1 hoge2 hoge3 hoge4 hoge5 eof; print preg_replace("/hoge/s","fuga",$str,3); ?> PHPのバージョンによって引数が若干ちがいます
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
省略可能な、置換の最大回数を指定するパラメータがあります。 省略時には無制限。つまり見つかった部分文字列すべてに対して置換を行います。 PHP: preg_replace - Manual http://jp2.php.net/preg_replace
お礼
マニュアルを拝見して、確かにその通りなのが分かりました。 コードが上手く動作せず、全読みの不全が原因かと目星を 付けたんですが、違ったようです。 ですが、おかげで原因を絞り込めました。 ありがとうございます。
お礼
理解不足でした。むしろparlよりも使い勝手がいいですね。 サンプルまで頂きまして、ありがとう御座います。 ちょっとスキルアップ出来ました。