我知道这个问题很旧,但是昨晚我在寻找不相关的问题时遇到了这个问题,这里的每个答案都是不好的。不只是不好, 很
不好。我在这里给出的示例将来自我于2005年创建的一个类,由于这个问题,该类花了过去几个小时针对PHP5进行了更新。其他系统确实存在,并且在发布此问题之前就已经存在,因此
eval当PHP的警告是:时,我很困惑为什么这里的每个答案都告诉您使用:
eval()语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选择,请特别注意不要在未经适当验证的情况下将任何用户提供的数据传递到其中。
在进入示例之前,获取要使用的类的位置位于PHPClasses或GitHub上。无论是
eos.class.php和
stack.class.php是必需的,但可以在同一个文件相结合。
使用这样的类的原因是它包括postfix(RPN)解析器和infix,然后是RPN解算器。有了这些,您就不必使用该
eval功能并使系统容易受到漏洞的攻击。有了这些类之后,下面的代码就可以解决一个简单的(到更复杂的)方程式,例如您的
2-1示例。
require_once "eos.class.php";$equation = "2-1";$eq = new eqEOS();$result = $eq->solveIF($equation);
而已!您可以对大多数方程使用这样的解析器,无论它多么复杂和嵌套,都无需诉诸“邪恶
eval”。
我不太确定我之前发现的其他人发生了什么-之前在GitHub上也遇到了另一个人,不幸的是我没有将其添加为书签,但这与包含解析器的大型float *** 作有关。
无论如何,我想确保在此处求解PHP方程式的答案不会指向所有未来的搜索者,
eval因为这是Google搜索的顶部。^^
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)