• ベストアンサー

文字列全体に対する置き換え [正規表現]

正規表現での文字列全体に対する、マッチ箇所 への置き換えについて、アドバイスをもらえないでしょうか。 parlでいうg修飾子はphpには無く、 例えば、[preg_match]は[preg_match_all]という関数で対応出来ますが、 置き換えを行う[preg_replace]には[preg_replace_all]がありません。 それに類する関数も無いように思います。 これに関して、PHPではどのように対応すれば良いのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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のバージョンによって引数が若干ちがいます

maru_n
質問者

お礼

理解不足でした。むしろparlよりも使い勝手がいいですね。 サンプルまで頂きまして、ありがとう御座います。 ちょっとスキルアップ出来ました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

省略可能な、置換の最大回数を指定するパラメータがあります。 省略時には無制限。つまり見つかった部分文字列すべてに対して置換を行います。 PHP: preg_replace - Manual http://jp2.php.net/preg_replace

maru_n
質問者

お礼

マニュアルを拝見して、確かにその通りなのが分かりました。 コードが上手く動作せず、全読みの不全が原因かと目星を 付けたんですが、違ったようです。 ですが、おかげで原因を絞り込めました。 ありがとうございます。