Smarty を提案する人に尋ねるのと同じ質問をあなたにします。
テンプレート言語であるPHPに、なぜテンプレート言語を追加したいのですか?
PHP はテンプレート言語です。人々はそれを忘れているか、そうではない純粋なオブジェクト指向言語のように扱おうとしていると思います。PHP の長所を活用します。そうではないものにしようとしないでください。
そうは言っても、テンプレートシステムがどれほど単純か複雑か、つまりサポートする予定の機能がわからないため、質問に答えるのは難しいです。
テンプレート言語が比較的単純な場合は、正規表現が適している可能性があります。ただし、いくつかの些細なケースでは機能しません。制御構造のネストは、おそらく最も一般的です。その場合、何らかの形式の初歩的なパーサーを作成する必要があります。
すべてのテンプレート構造が次のようなブロックになっているとしましょう:
{:...:}
それ以外の場合は HTML ページで発生する可能性は比較的低いためです (ただし、完全を期すために、ユーザーが実際にこれらの文字の組み合わせを使用したい場合に対応する必要があります。
ファイルをスキャンしてそのような式を探し、それに応じて処理する必要があります。正規表現を使用してそれらすべてを見つけることができますが、条件付きインクルードのように必ずしも一致するとは限りません。
{:if ...:}
Some conditional content
{:endif:}
なんで?このため:
{:if *some condition*:}
{:if *some other condition*:}
Some other conditional content
{:endif:}
Some conditional content
{:endif:}
それを正規表現と確実に一致させることはできないため、ファイルを何らかの形式の語彙素のツリーに解析してから処理する必要があります。