• ベストアンサー

【PHP】ereg_replace() にて置換の実行有無の確認方法は?

PHP(Ver5)について質問です。 ereg_replace() 等の置換関数は実際に置換したか(マッチしたか)否かの応答はないのでしょうか? 現状、置換前文字列と置換後を比較して確認しているのですが、なんだか原始的のような気がして… 効率的な方法がありましたら教えてください。よろしくお願いいたします。

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

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

preg_replace_callback()でなくてもpreg_replace()で置換回数は取れますが・・・ まにゅある preg_replace() http://jp2.php.net/manual/ja/function.preg-replace.php mb_ereg_replace()は置換回数を取得できないので元文字列と比較か データが大きい場合は置換文字列をmb_strpos()で検索するしかないでしょうね。 ereg_replace()は使う確固たる根拠がない限り使わないほうが良いです。

takosuke88
質問者

お礼

なるほど!これは知りませんでした。レンタルサーバがPHP5になったので早速使ってみます。 >>ereg_replace()は使う確固たる根拠がない限り使わないほうが良い preg_replace() はマルチバイトに弱いというイメージを持ってまして、例えば、 ・UTF-8しか使えない ・正規表現がうまく動かない?つまり、 $newStr = preg_replace("/第.章/", "第四章", "それは第□章です。"); では置換されない。(.が3つなら置換されるけれど) などの理由によりpreg_replace()は極力避けていたのですが… どうなんでしょうか。

その他の回答 (2)

  • arexis
  • ベストアンサー率66% (66/99)
回答No.3

ぉぉ^^; 私が勉強になりました。

  • arexis
  • ベストアンサー率66% (66/99)
回答No.1

preg_replace_callbackで関数に渡せば、マッチング回数は数えられますね。 でもこれも原始的ですけど・・・w 正規表現が不要ならstr_replaceで回数は出ますが、正規表現が使えないから用途が限られる。 と言った所でしょうかね。

takosuke88
質問者

お礼

そんな関数があったとは… 勉強になりました。m(_ _)m

関連するQ&A

専門家に質問してみよう