PHP - 验证小胡子模板

PHP - validate mustache template

如何验证 PHP 中的小胡子模板字符串?例如,如果我通过

Hi {{#name}}{{name}}{{/name}}{{^name}}guest{{/name}}

并且验证器应该 return 有效,但是如果我通过

Hi {{#name}}{{name}}{{/name}}{{^name}}guest

应该return无效。

注意 我希望在 PHP 中完全完成此操作,而不依赖 Mustache_Engine 或任何其他第 3 方依赖项。

直接编译:

function validate($template) {
    $m = new Mustache_Engine;
    try {
        $m->getParser()->parse($m->getTokenizer()->scan($template));
        $valid = true;
    } catch (Mustache_Exception_SyntaxException $e) {
        $valid = false;
    }
    return $valid;
}

如果不构建小胡子解析器,就不可能正确验证所有有效的小胡子模板。没有正则表达式快捷方式。你需要一个真正的解析器。

如果您对一些假阴性(和一些假阳性)没有意见,您可以构建一些东西来验证其中的一个子集。或者您可以构建一个合适的解析器。但你最好的选择是使用 mustache.php 来解析它,如其他答案所示。

你为什么要在没有任何依赖的情况下尝试这样做?