- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:preg_match・ereg_replaceの動作について)
preg_match・ereg_replaceの動作について
このQ&Aのポイント
- preg_matchとereg_matchの動作について調査中
- $$match[1]→$($match[1])→$(v_insert)となる理由について説明を求めています
- スクリプトの動作と変数への値の設定方法について詳しく知りたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
preg_match の3番目の引数は検索結果が配列となって代入されることになっています。 その配列の0番目はパターン全体にマッチしたテキストが入るはずなので実際は {%v_insert} が入ってるのではないでしょうか。(私の手元の環境ではそうなりました) 配列の1番以降はサブパターンにマッチしたテキストが入るので、パターンの中の ( ) で囲まれた部分が入ります。 書かれているパターンの中には ( ) が一組しかないので、その部分にマッチしたテキストが $match[1] に入ります。
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5238/13705)
回答No.2
> つまり、(.*)がv_insertってことですね。 そうですね、/\{%(.*)\}/ という正規表現で "{%v_insert}テスト" をマッチさせると (.*) の部分は v_insert にマッチします。
質問者
お礼
いろいろありがとうございます。 (括弧)の中のパターンがサブパターンだと知って、ますます理解が深まりました。 もやもやが晴れました!
お礼
ご回答ありがとうございます。 $match[0]は{%v_insert}だったんですね。 こっちの環境でprint_rしても、何も出てこなかったので・・・。 $v_insert→代入なので、$$match[1]→代入となるためには$match[1]がv_insertにならないといけないですよね。つまり、(.*)がv_insertってことですね。