Reputation: 342
would regex matches while/loop double curly braces contains double curly braces?
<?php
$str = '<html lang="{{var doc-lang}}">
<head>
<title>{{var doc-title}}</div>
</head>
<body>
<div class="container">
<div class="row" {{while products}}>
{{var name}}
{{var sku}}
{{var barcode}}
</div {{while end}}>
</div>
</body>
</html>';
Can we get
<div class class="row"', [products], {{var name}}, {{ var sku}} and {{var barcode}}
from $str
?
I only can think of this Reg
\<((.*)\{\{while\s+(.*)\}\}(.*)\{\{while\s+end\}\})\>
Upvotes: 0
Views: 403
Reputation: 10340
Try this:
/\s*(.*\{\{while\s+.*(?:\r?\n.*)+\{\{while\s+end.*)/
Also to get them separately (as you mentioned in the question and comment), Try this:
/\s*(?:(.*)\s+\{\{while\s+(.*)\}\}.*\r?\n\s*(.*)\r?\n\s*(.*)\r?\n\s*(.*)\r?\n.*)/
And you can get what you need like this:
'$1', [$2], $3, $4 and $5
Output:
'<div class class="row"', [products], {{var name}}, {{ var sku}} and {{var barcode}}
Upvotes: 2