【发布时间】:2011-07-28 00:43:01
【问题描述】:
更新:我意识到 eval() 存在缺陷,但我“应该”将它用于这个特定问题。因此,任何解决该问题的方法都需要牢记这一点。
我刚刚开始在我的一个课程中使用 PHP,并且正在使用正则表达式(具体来说是 preg_match())和 eval() 实现一个非常有限的计算器。计算器的一个特点是,当它输入任何形式的错误时,会显示一条由我编写的简单错误消息,而不是默认的 PHP 错误。这适用于大多数错误输入(带有字母的字符串、连续的多个运算符等),但我无法捕捉到其他类型的错误。特别是输入:
0/0
诸如此类的东西
2--1
后一个表达式在技术上是正确的,但我不需要处理它(大概是为了让我们的代码更简单,因为这是一个让我们熟悉 PHP 的简单项目),而是可以将我的简单错误消息输出为回复。计算器不支持括号,所以像
这样的表达式2-(-1)
无效。问题是我似乎无法弄清楚 eval() 在遇到这样的事情时会返回什么,如果它甚至返回的话。
eval() 总是返回吗?我已经阅读了 eval() 文档几次,但似乎仍然无法弄清楚我应该检查什么样的事情。我宁愿解释要检查的内容和原因,而不是盲目地检查返回值及其补码,直到我弄明白为止。以下是上述两个错误的屏幕截图(我没有足够的声誉将它们嵌入此处)。任何帮助将不胜感激!
【问题讨论】: