我正在寻找可以解释php中的字符串并执行简单数学计算的东西,然后返回一个布尔结果,表示该表达式是true还是false.
例如:
>“3 * {mysalary} / 9 = 10000”中的苏类型
> PHP将其拆分为两个表达式 – explode(‘=’,string);
> PHP获取我的数据库字段列表,并用数据替换任何“{}”分隔字段(typecasted为int)
> PHP然后评估数学表达式
>然后php将左侧与右侧进行比较
>生成布尔结果.
听起来可能很复杂但只需要非常简单.以下是约束:
1 /数学运算符固定为: – / *
2 /比较运算符固定为:=> < > =< =
3 /不需要浮点比较,一切都可以在整数级别完成.因此,如果需要,可以舍入任何划分,或者只是围绕最终结果
只有两个表达式,只有一个比较运算符.
如果存在任何类型的错误,我们将返回false.
有没有人见过可以做到这一点的事情?我知道我可以制造一些东西,但为什么要重新发明轮子呢?
如果你还没有看到任何东西,你是否愿意列出一些你可以在构建时想到的“陷阱”或警告.
在阅读了一些之后,我意识到我可以使用shunting yard algorithm.有没有人在PHP中实现这个?
我知道eval可能是一种简单的方法来执行此操作,但是,我担心用户可能很容易使用此方法破坏某些内容或导致语法错误.我宁愿不在解决方案中包含它,或者如果我这样做,它需要严格控制它的使用方式.
谢谢.
贾森