3

一致させようとしています: "{{ loop (something) }}" と最初の {{ /loop (that something) }} の間のすべて

テキストの例:

{{ LOOP data }}
  <span> Member key       =  {{.key}}  </span>
  <span> Member value     =  {{.}}     </span>
  <span> Member member    =  {{name}}  </span>
  <span> Iteration number = {{.counter}} </span>
{{ /LOOP data }} 

正規表現が機能していません:

/\{\{\s+loop\s+(.+?)\s+\}\}([\w\W]+?)\{\{\s+\/loop\s$1\s+\}\}/i

ご覧のとおり、最初に一致したグループを「$1」で再利用しようとしています:何が足りないのですか?

次のPHPコード:

$text = '
{{ LOOP data }}
  <span> Member key       =  {{.key}}  </span>
  <span> Member value     =  {{.}}     </span>
  <span> Member member    =  {{name}}  </span>
  <span> Iteration number = {{.counter}} </span>
{{ /LOOP data }}   
';

preg_match('/\{\{\s+loop\s+(.+?)\s+\}\}([\w\W]+?)\{\{\s+\/loop\s\1\s+\}\}/i', $text, $match);
print_r($match);
die;
4

1 に答える 1

7

私はあなたが望ん\1でいると信じています$1

詳細: http://www.regular-expressions.info/brackets.html#usebackrefinregex

于 2013-01-14T13:07:25.137 に答える