単純なテンプレート言語を書いていますが、ネストされたステートメントに問題があります。たとえば、Foreachに使用しているこの正規表現は、次のとおりです。
preg_match('/\{foreach +\$(.*?)\}(.*?){\/foreach\}/sui', $this->content, $matches);
すべて正常に動作しますが、foreachをforeachにネストすると、エラーが発生します。正規表現は最初の開始タグを取得しますが、2番目の終了タグを取得するためです。
{foreach $ XY}
{foreach $ YX} {/ foreach}
{/ foreach}
どうすればこれを解決できますか?ありがとうございました!