【问题标题】:Symfony ExpressionLanguage evaluate string with dashesSymfony ExpressionLanguage 用破折号评估字符串
【发布时间】:2016-08-25 11:48:35
【问题描述】:

我正在尝试使用 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 系统,如果可以避免,我不会更改它。

有什么解决办法吗?

谢谢

【问题讨论】:

  • 破折号被解释为算术运算符(减法)symfony.com/doc/current/components/expression_language/… 我认为您唯一的解决方案是将其转换为下划线。
  • 是的,刚看到这个。我必须在字符串中添加引号(或双引号)以使其像我一样工作。 $string = '"user.chuck-norris.getId()"';谢谢。 :)

标签: php symfony expression evaluate


【解决方案1】:

正如 Yonel 所说,破折号被解释为运算符。

所以要让它工作,我只需要用取消划线替换破折号

$string = 'user.chuck-norris.getId()';

然后在发出请求之前,将 _ 替换为 -

$value = str_replace('_', '-', $value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2010-11-08
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多