我正在寻找能够在php中解释字符串并执行简单的数学计算的东西,然后返回一个布尔结果,判断表达式是真是假。
例如:
这听起来可能很复杂,但它只需要非常简单。以下是约束条件: 1/数学运算符固定为:+-/* 2/比较运算符固定为:=>< >= <= 3/不需要浮点比较,一切都可以在整数级别上完成。因此,如果需要的话,任何分区都可以四舍五入,或者只是简单地绕过最终结果。
只有两个表达式,只有一个比较运算符。如果有任何错误,我们只会返回false。
有没有人见过能做到这一点的东西?我知道我能做点什么,但为什么要重新发明轮子呢?
如果您还没有看到任何东西,您是否愿意列出一些“抓到”或警告是您可以想到的时候,建立这个。
读了更多之后,我意识到我可以使用调车码算法。有人在PHP中实现了这个功能吗?
我知道eval可能是一种简单的方法来执行这一操作,但是它让我担心用户很容易使用这个方法破坏一些东西,或者导致语法错误。我宁愿不把它包括在解决方案中,或者如果我这样做了,那么它将需要严格控制它的使用方式。
谢谢。
杰森
发布于 2010-09-08 07:52:08
看看evalMath类在PHPClasses上。这应该可以完成您想做的所有事情,包括变量替换(例如在计算表达式之前在示例中为“my薪水”设置一个值)。
发布于 2015-01-26 22:08:17
在 (ps )上有一个表达式解析器引擎(为PHP、Python和ActionScript实现)。我是作者)
该引擎非常灵活和可配置,可以创建解析器来解析任何表达式,其中还包括用户定义变量、用户定义函数、多态运算符和通用n进制操作符(例如。三元如果-然后-)
该算法相当通用(可以说是调车场算法的一个通用变体)。
发布于 2010-09-08 01:54:52
我要采取的方法是:
现在..。
最难的一步是第二步,你必须考虑运算符优先,括号和其他事情,但有大量的文献(你甚至可以只关注维基百科的链接)
https://stackoverflow.com/questions/3664017
复制相似问题