检查字符串是否具有有效的 Twig 语法

Mik*_*ikO 2 php symfony twig

很简单,在 Symfony2 应用程序中,在服务类的函数内,我想检查作为参数传递的给定字符串是否具有有效的 Twig 语法...

public function checkIfValidTwig($twigString)
{
    $isValid = false;
    $isValid = someWay->toCheckIf()->itIsValid($twigString);
    return $isValid;
}
Run Code Online (Sandbox Code Playgroud)

任何想法?

Ada*_*ney 6

您可以使用,如果无法解析 Twig 代码,Twig_Environment::tokenize()它将引发异常- https://twig.symfony.com/doc/2.x/internals.html#the-lexerTwig_Error_Syntax

class TwigValidator
{
    /**
     * @var \Twig_Environment
     */
    private $twig;

    /**
     * @param \Twig_Environment $twig
     */
    public function __construct(\Twig_Environment $twig)
    {
        $this->twig = $twig;
    }

    /**
     * @param string $twigString
     *
     * @return boolean
     */
    public function checkIfValidTwig($twigString)
    {
        try {
            $this->twig->tokenize($twigString);
        
            return true;
        } catch (\Twig_Error_Syntax $e) {

            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)