【问题标题】:Math operation directly from form value直接从表单值进行数学运算
【发布时间】:2014-12-24 07:18:00
【问题描述】:

我希望直接从表单 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) 的输出。

【问题讨论】:

标签: php forms function


【解决方案1】:

试试这个

$equation = preg_replace('[^0-9\+-\*\/\(\) ]', '', $_POST['equation']);
if(!empty($equation)){
   eval( '$total = (' . $equation . ');' );
   echo $total;
}

您必须注意安全性或使用 preg_replace 和/或设置一些条件。

【讨论】:

  • Ram 你太棒了兄弟。谢谢 :) 我会注意安全的。但是非常感谢这个方法..太棒了..
【解决方案2】:

通常人们为此目的使用 eval,但最好不要使用 eval,这不是一个好习惯,这是一个安全漏洞。

function calc($str)
{
    $str = preg_replace('[^0-9\+-\*\/\(\) ]', '', $str); 

    $compute = create_function('', 'return (' . $str . ');' );
    return 0 + $compute();
}

echo calc($_POST['equation']);

【讨论】:

  • 来吧,@plutov.by,稍微解释一下不会有坏处! ;)
猜你喜欢
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多