<?php
$re = '~{{(\w+)\^([^^\{\}]?)\^([^\{\}]+)}}((?>(?R)|[^{]*(?:\{(?!{/?\1[^\{\}]*}})[^{]*)*)*){{/\1}}~i';
$str = "before {{if^^p1^p2}} IN1; {{if^ ^p1}} {{iif}} IN3 {{/if}} IN1-1 {{/if}} after\nbefore {{if^ ^p1}} IN1; {{if^ ^p1}} {{if^ ^p1}} IN3 {{/if}} {{/if}} IN1-1 {{/if}} after\nbefore {{if^ ^p1}} IN1; {{if^ ^p1}} {{if^ ^p1}} IN3 {{/if}} {{/if}} IN1-1 {{if^ ^p1}} IN4 {{/if}} {{/if}} after";
PD9waHAKCiRyZSA9ICd+e3soXHcrKVxeKFteXlx7XH1dPylcXihbXlx7XH1dKyl9fSgoPz4oP1IpfFtee10qKD86XHsoPyF7Lz9cMVteXHtcfV0qfX0pW157XSopKikqKXt7L1wxfX1+aSc7IAokc3RyID0gImJlZm9yZSB7e2lmXl5wMV5wMn19IElOMTsge3tpZl4gXnAxfX0ge3tpaWZ9fSBJTjMge3svaWZ9fSBJTjEtMSB7ey9pZn19IGFmdGVyXG5iZWZvcmUge3tpZl4gXnAxfX0gSU4xOyB7e2lmXiBecDF9fSB7e2lmXiBecDF9fSBJTjMge3svaWZ9fSB7ey9pZn19IElOMS0xIHt7L2lmfX0gYWZ0ZXJcbmJlZm9yZSB7e2lmXiBecDF9fSBJTjE7IHt7aWZeIF5wMX19IHt7aWZeIF5wMX19IElOMyB7ey9pZn19IHt7L2lmfX0gSU4xLTEge3tpZl4gXnAxfX0gSU40IHt7L2lmfX0ge3svaWZ9fSBhZnRlciI7IApwcmVnX21hdGNoX2FsbCgkcmUsICRzdHIsICRtYXRjaGVzKTsKcHJpbnRfcigkbWF0Y2hlcyk7