preg_matchとereg_matchの動作について調べています。
下記のスクリプトを実行すると、$stringが「代入テスト」となります。
-------------------------------------------
$v_insert = "代入"
$string = "{%v_insert}テスト";
while (preg_match("/\{%(.*)\}/U", $string, $match)){
$string = ereg_replace($match[0], $$match[1], $a_subject);
}
-------------------------------------------
$$match[1]→$($match[1])→$(v_insert)となり、
$match[0]→/\{%(.*)\}/U
$match[1]→v_insert
$$match[1]→代入
となるのは分かったんですが、なぜ、$match[0]→/\{%(.*)\}/Uで$match[1]がv_insertになるのかが分かりません。
このスクリプトはどのように動き、どのように変数に値が設定されているのでしょうか。
No.1ベストアンサー
- 回答日時:
preg_match の3番目の引数は検索結果が配列となって代入されることになっています。
その配列の0番目はパターン全体にマッチしたテキストが入るはずなので実際は {%v_insert} が入ってるのではないでしょうか。(私の手元の環境ではそうなりました)
配列の1番以降はサブパターンにマッチしたテキストが入るので、パターンの中の ( ) で囲まれた部分が入ります。
書かれているパターンの中には ( ) が一組しかないので、その部分にマッチしたテキストが $match[1] に入ります。
参考URL:http://www.php.net/manual/ja/function.preg-match …
ご回答ありがとうございます。
$match[0]は{%v_insert}だったんですね。
こっちの環境でprint_rしても、何も出てこなかったので・・・。
$v_insert→代入なので、$$match[1]→代入となるためには$match[1]がv_insertにならないといけないですよね。つまり、(.*)がv_insertってことですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPod・ウォークマン・音楽プレーヤー iTunes Matchについて。 iTunes Matchについて質問させてください。 このサービ 2 2022/06/23 12:50
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Excel(エクセル) エクセルの関数について 5 2023/01/26 15:26
- Excel(エクセル) Excel 組み合わせ関数の使い方を教えてください。 1 2023/08/11 17:45
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- Excel(エクセル) エラーの原因が分からない 1 2023/03/21 11:13
- Excel(エクセル) DATE関数で指定する「日」のセルが関数の場合の対処法 5 2022/09/14 15:46
- Excel(エクセル) ExcelVBAの、Index matchについて 2 2023/04/18 16:57
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数字のみを2倍3倍にする...
-
PHPで あるフォルダ内の、特定...
-
正規表現でシングルクォーテー...
-
「半角数字」と「+」を許可する...
-
正規表現 先頭一桁をマッチさせ...
-
日本語の文字列のみをURLエンコ...
-
PHPの「ereg」って何の略で...
-
URLを抽出する正規表現
-
、"(ダブルクォーテーション)...
-
正規表現での英字+ハイフンの...
-
アンカーリンク 正規表現
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
テキストファイルから改行コー...
-
エスケープ文字の復帰(¥r)と...
-
文字の入力で横バー上段、中断...
-
グレープシティのSPREAD...
-
エクセルのCOUNTIFが正しくカウ...
-
UTF8メールがLotus Notesで文字...
-
jsp 改行コードで改行させて表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを使ってHTMLソースから特定...
-
、"(ダブルクォーテーション)...
-
preg_matchでエラーが出ます。
-
PHPで変数から1行目だけを取得...
-
PHPの「ereg」って何の略で...
-
PHPの正規表現で住所を分けるに...
-
PHPで あるフォルダ内の、特定...
-
Excelで数字のみを2倍3倍にする...
-
正規表現で「0」のみ抽出
-
PHPで<a>タグ内からURLと文字を...
-
住所から特定の文字列、数値を...
-
正規表現で、半角大文字と半角...
-
正規表現で特定のHTMLタグのク...
-
正規表現でシングルクォーテー...
-
正規表現パターンの記入方法に...
-
Smartyで部分一致
-
preg_matchでのマッチが正しく...
-
正規表現を使いimgタグ内から幅...
-
PHPメールフォーム URLと半角...
-
電話番号のチェック ハイフン...
おすすめ情報