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