Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 直接从形式值进行数学运算_Php_Forms_Function - Fatal编程技术网

Php 直接从形式值进行数学运算

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'])){

我希望直接从表单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'])){
   $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,一点解释也不会有什么坏处!;)