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 来解析它,如其他答案所示。
你为什么要在没有任何依赖的情况下尝试这样做?
如何验证 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 来解析它,如其他答案所示。
你为什么要在没有任何依赖的情况下尝试这样做?