2016-09-12 3 views
1

Как проверить строку шаблона усов в PHP? Например, если я прохожуPHP - проверка шаблона усов

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

и валидатор должен вернуться в силе, но если я прохожу

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

он должен вернуть недействителен.

Примечание Я предпочел бы, чтобы это было сделано полностью на PHP без Mustache_Engine или любой другой зависимости от третьей стороны.

+0

короткий ответ: напишите свой собственный двигатель Mustache. (подсказка: проще и меньше ошибок использовать только существующую библиотеку) – Kaii

ответ

0

Это невозможно правильно проверить все действительные шаблоны усов без создания усов анализатора. Прямого выражения нет. Вам нужен фактический парсер.

Если вы в порядке с некоторыми ложными отрицаниями (и некоторыми ложными срабатываниями), вы можете создать что-то, чтобы проверить подмножество из них. Или вы можете создать правильный парсер. Но лучше всего использовать mustache.php для его анализа, как указано в других ответах.

Почему вы пытаетесь сделать это без каких-либо зависимостей?

0

Просто скомпилировать:

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; 
} 
+0

Я обновлю свой комментарий, но я не хочу использовать другие пакеты. – Kousha

+0

Затем, пожалуйста, обновите свой вопрос еще раз и покажите, что вы пробовали до сих пор. –