我正在尝试使用symfony ExpressionLanguage组件评估包含破折号的一些字符串。
这是我到目前为止所得到的:
...
$string = 'user.chuck-norris.getId()';
$language = new ExpressionLanguage();
$evaluated = $language->evaluate($expression, $users);
...
这会返回以下错误:
Variable "norris" is not valid around position 12. (Symfony\Component\ExpressionLanguage\SyntaxError)
如果我用一个下划线“_”改变短划线“ - ”,这是有效的,但我有一个使用短划线的slug系统,如果我可以避免它,我不会改变它。
有没有解决方案?
由于
答案 0 :(得分:2)
如Yonel所述,短划线被解释为操作员。
因此,为了实现这一点,我只需要用不受欢迎的颜色替换破折号
$string = 'user.chuck-norris.getId()';
然后在发出请求之前,将_替换为
$value = str_replace('_', '-', $value);