我想知道在PHP中使用eval()来解析用户填写表单时输入的公式时应该检查哪些类型的内容。我看过很多关于eval()的答案,但似乎并非所有人都同意。这是我收集到的:不要对字符串使用eval(这可能是个问题,因为它是我需要解析的公式)去除来自表单的输入(我不完全确定我需要去除哪些东西)Eval可能是邪恶的,也可能不是邪恶的,并且存在安全风险(是否有其他方法可以解析字符串中的方程式?)你们认为我应该怎么做?编辑:我尝试了eval方法,虽然它确实有效,但我使用的环境卫生不支持两个以上的操作数。由于我真的不想编写自己的(可能不安全的)卫生正则表达式,所以我将查找并使用预先编写的数学类。感谢大家
我是一名自学成才的开发人员(大约3年了),我想通过学习如何将数学方程式写入代码来提高我的开发技能。这一直困扰着我,我看到许多书籍和文章都附有发光的数学方程式,看起来真的很有趣。我可以读懂其中的一部分(乘法、除法、小数、西格玛、变量),但在用代码实现它们时遇到了麻烦。例如,如何开始理解这些方程式:http://en.wikipedia.org/wiki/Manhattan_distance然后开始用代码编写它们?有什么地方可以推荐吗?这不是代码问题,而是缺乏基本的数学理解吗?我愿意听和读,因为我觉得这种能力对于开发人员来说非常重要。 最佳答案
1.差分隐私的保护逻辑 我们通过一个例子来介绍一下差分隐私的工作。 假设现在有一个婚恋数据库,2个单身8个已婚。查询函数是查询单身人数。刚开始的时候查询发现,2个人单身。现在张三跑去登记了自己婚姻状况。攻击者一查,发现有3个人单身。显然攻击者可以得到张三是单身的信息。 差分隐私解决机制的方式:对查询函数添加部分噪声。应用差分隐私添加噪声后: 张三跑去登记自己的婚姻状况后,攻击者一查,发现有2.7个人单身。此时,攻击者就不能知道有多少人单身,从而不知道张三是否是单身了。 显然,差分隐私是通过对数据进行添加均值为0的噪声来将数据库的查询结果从具体数值变成随机变量来保护隐私。
我正在使用用户提供的字符串,例如“m*0.2”,其中“m”是$value并评估该字符串。允许用户使用4种基本数学运算符、小数和负数。省略任何使用其他任何东西的尝试。$equation=$metric['formatter'];$equation=preg_replace("/[^0-9*m.\/\+\-]/","",$equation);//stripsextraparamsif(strlen($equation)>1){$equation=str_replace("m",'$value',$equation);$code='$newValue='.$equation.';';if(v
我正在努力寻找执行此操作的最佳方法。基本上,我会得到类似这样的字符串,任务是打印出经过数学分析的字符串。jack有[0.8*100]%的机会通过测试。凯蒂有[(0.25+0.1)*100]%的几率。数学方程总是用方括号括起来。为什么我要像这样处理字符串是一个很长的故事,但我非常感谢您的帮助! 最佳答案 PHP有很多数学计算库。快速网络搜索出现thisone.编写您自己的解析器也是一种选择,如果只是基本的算术运算,应该不会太困难。有了那里的资源,我会远离这个。您可以采用更简单的方法并使用eval.请注意先清理您的输入。关于evaldo
我需要一个库来解析一个方程式,并根据输入给出结果。例如这样的事情:Stringequation="5=6/z";EquationSolversolver=newEquationSolver(equation);doubleresult=solver.getResult();System.out.println("result:"+result);评估为:6/5是否有任何类型的Java库可以为我做这件事?基本上我需要程序来隔离任意方程中的单个未知变量...谢谢托马斯 最佳答案 您正在寻找的是计算机代数系统。Wikipedia列出一些选
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我正在尝试将下面的等式转换为编程代码。目的是找到两条线的交点。并提示(y1-y2)x-(x1-x2)y=(y1-y2)x1-(x1-x2)y1(y3-y4)x-(x3-x4)y=(y3-y4)x3-(x3-x4)y3有人告诉我使用cramers规则,但cramers规则有6个diff变量。我将从4个不同的点开始作为8个变量(x1、y1、x2、y2、x3、y3、x4、y4)我正在使用Java。任何帮助,将不
如何找到解决方案的数量s=a+bx=a^b当给定s和x时,^表示xor?那么对于(0,0)或(31,31)或(15,10)呢?我试过将x转换成二进制字符串,但之后我不确定该把它放在哪里。 最佳答案 如果没有解决方案,方法solution返回null。如果有解决方案,它返回a(仅针对一个解决方案)。您可以通过执行s-a或x^a来获得b。如果存在解决方案,则解决方案的总数(long)是2的Long.bitCount(x)次方。例如,s=24,x=6的解是a=9,b=15。二进制:9=100115=1111这些数字在2个位置不同,因此总共
我必须找到具有任意数量变量的任意数量的给定线性方程的任意解(可能存在很多或不存在)。在java。使用什么库和方法?实现什么?我想尽可能少地工作。 最佳答案 试试ApacheCommons数学求解器http://commons.apache.org/math/userguide/linear.html 关于java-用于查找具有任意数量变量的任意数量线性方程的任意解的库,我们在StackOverflow上找到一个类似的问题: https://stackoverf
当我做这样的事情时inttest=5+3*(4-1)/2;我得到9。我怀疑这是因为int向下舍入。但是,当我这样做时floattest=5+3*(4-1)/2;我也得到9。但是,当我这样做时floattest1=5;floattest2=4.5;floattest=test1+test2;测试最终输出9.5。有人可以解释这背后的逻辑吗?为什么我在第二个例子中得不到9.5?谢谢。 最佳答案 在您的第二个示例中,尽管您将结果赋值给float类型的变量,但计算本身的执行方式仍与第一个示例完全相同。Java不查看目标变量类型来确定如何计算右