栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在数学上评估“ 2-1”之类的字符串以产生“ 1”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在数学上评估“ 2-1”之类的字符串以产生“ 1”?

我知道这个问题很旧,但是昨晚我在寻找不相关的问题时遇到了这个问题,这里的每个答案都是不好的。不只是不好,
不好。我在这里给出的示例将来自我于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搜索的顶部。^^



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408416.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号