• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:preg_match・ereg_replaceの動作について)

preg_match・ereg_replaceの動作について

このQ&Aのポイント
  • preg_matchとereg_matchの動作について調査中
  • $$match[1]→$($match[1])→$(v_insert)となる理由について説明を求めています
  • スクリプトの動作と変数への値の設定方法について詳しく知りたい

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

preg_match の3番目の引数は検索結果が配列となって代入されることになっています。 その配列の0番目はパターン全体にマッチしたテキストが入るはずなので実際は {%v_insert} が入ってるのではないでしょうか。(私の手元の環境ではそうなりました) 配列の1番以降はサブパターンにマッチしたテキストが入るので、パターンの中の ( ) で囲まれた部分が入ります。 書かれているパターンの中には ( ) が一組しかないので、その部分にマッチしたテキストが $match[1] に入ります。

参考URL:
http://www.php.net/manual/ja/function.preg-match.php
gakkacho3
質問者

お礼

ご回答ありがとうございます。 $match[0]は{%v_insert}だったんですね。 こっちの環境でprint_rしても、何も出てこなかったので・・・。 $v_insert→代入なので、$$match[1]→代入となるためには$match[1]がv_insertにならないといけないですよね。つまり、(.*)がv_insertってことですね。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> つまり、(.*)がv_insertってことですね。 そうですね、/\{%(.*)\}/ という正規表現で "{%v_insert}テスト" をマッチさせると (.*) の部分は v_insert にマッチします。

gakkacho3
質問者

お礼

いろいろありがとうございます。 (括弧)の中のパターンがサブパターンだと知って、ますます理解が深まりました。 もやもやが晴れました!