テンプレート エンジンは と の両方{{foo}}を{{{bar}}}処理します。これらは異なる処理に対応しています。
現在、ソースはpreg_replaceso:{{\s*(.+?)\s*}}とのように処理されてい{{{\s*(.+?)\s*}}}ます。
問題は、これらの正規表現が重複していることです。たとえば{{\s*(.+?)\s*}}、{{{bar}}}.
重要な注意:マーカー{{、{{{、は}}、}}}実際のコードでユーザーが構成できます。したがって、通常のソリューションなど[^{}]は使用できません。
{{{ }}}現在の解決策は をの前
に置き換えることです{{ }}が、これでは十分に堅牢ではありません。実際、マーカーはユーザー設定可能であり、ユーザーはアプリを壊す値にマーカーを簡単に設定できます。
相互に排他的で、順序に依存しない、より堅牢な正規表現を作成しようとしています。私はすでにアサーション、条件などを使用しようとしましたが、成功しませんでした。どんな助けでも大歓迎です。
ちなみに、コードが長くなりすぎない限り、正規表現の使用は必須ではありません。