Php 直接从形式值进行数学运算
我希望直接从表单post值执行数学运算。是否有一个功能来实现这一点?我试过了,但它只是按原样输出输入值:Php 直接从形式值进行数学运算,php,forms,function,Php,Forms,Function,我希望直接从表单post值执行数学运算。是否有一个功能来实现这一点?我试过了,但它只是按原样输出输入值: <form action="" method="post"> <input type="text" name="equation" value="2+(3+4)"> <input type="submit" value="Calculate"> </form> <?php if(isset($_POST['equation'])){
<form action="" method="post">
<input type="text" name="equation" value="2+(3+4)">
<input type="submit" value="Calculate">
</form>
<?php
if(isset($_POST['equation'])){
$equation = htmlspecialchars($_POST['equation']);
echo $equation;
}
?>
如您所见,我希望在回显$equation时获得2+(3+4)的输出。试试这个
$equation = preg_replace('[^0-9\+-\*\/\(\) ]', '', $_POST['equation']);
if(!empty($equation)){
eval( '$total = (' . $equation . ');' );
echo $total;
}
您必须注意安全性,或者使用preg_替换和/或设置一些条件。通常人们使用eval来实现此目的,但最好不要使用eval,这不是一个好的做法,这是一个很大的安全漏洞
function calc($str)
{
$str = preg_replace('[^0-9\+-\*\/\(\) ]', '', $str);
$compute = create_function('', 'return (' . $str . ');' );
return 0 + $compute();
}
echo calc($_POST['equation']);
你为什么要这样做?你必须建立自己的功能。如果你想做直接的数学运算,在你的PHP中构建它或者获取用户输入,然后把它分配给变量,然后从那里做数学运算。谢谢:)我会负责保安的。但是非常感谢你的方法。。太棒了……来吧,@plutov.by,一点解释也不会有什么坏处!;)