【问题标题】:Parse error: syntax error, unexpected '&' in ... : eval()'d code on line 1解析错误:语法错误,...中出现意外的“&”:第 1 行的 eval()'d 代码
【发布时间】:2017-05-16 09:12:20
【问题描述】:

首先,感谢您阅读我的第一个 stackoverflow 问题!!!

我有以下代码:

eval('return ('.$statement.');')

我正在创建一个用于学习目的的模板引擎,因此,我需要该代码来对我的视图执行一些条件操作。

这段代码的目的是执行一条语句并返回逻辑结果。

假设$statement = '1 == 1';这个返回真,

但是,如果我输入$statement = 'cookie()->has('name');',则会出现以下错误:

解析错误:语法错误,意外的 '&' in /var/www/html/exemlo.com/core/Instead/src/TemplateEngines/TemplateEngine.php(96) : eval()'d 代码在第 1 行

注意cookie函数已经存在并且可以全局访问,返回1,只有1。

有什么想法吗??解决方案?再次感谢。

【问题讨论】:

  • 这行代码语法错误:$statement = 'cookie()->has('name');应该是:$statement = 'cookie()->has("name");';
  • 您不能将$statement = 'cookie()->has('name'); 放在任何地方,因为这本身就会导致语法错误。如果在您的代码中找不到与号,那么您会收到一条抱怨与号的错误消息,这毫无意义。
  • 对不起,sintax 错误是我的错,真正的代码是这样的:'cookie()->has("name");';.
  • 这一直抛出同样的错误。
  • Gábor Nádai,甚至更改您的代码,这直到显示相同的错误。

标签: php eval template-engine


【解决方案1】:

这很奇怪,但由于某种原因,$tatement = filter_var($statement, FILTER_SANITIZE_STRING) 导致错误,将此函数替换为 strip_tags 后错误消失了。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2018-08-15
    • 2014-05-24
    • 1970-01-01
    • 2013-12-09
    • 2020-04-23
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多