如何解一个通过邮递传递的数学公式


How to solve a mathematical formula passed via post

我喜欢解一个通过邮件传递的数学公式。如:

<form name="form1" method="post" action="">
  <label for="f">F&oacute;rmula: </label>
  <input type="text" name="f" id="f" value="<?=$_POST['f']?>">
  <input type="submit" name="button" id="button" value="Submit">
</form>
$f = $_POST['f']; //Suppose the user typed: (A + B) * C as formula

用这个公式通过$_POST (A + B) * C进行数学演算

A = 1; B = 2; C = 3;
$x = (A + B) * C // here the formula would be
$_POST[f] = (A + B) * C
echo $ x;

您可以使用regexp或字符串操作函数将其解析为字符串。

你可以使用第三方类,检查以下问题在stackoverflow:如何计算公式传递在php

不需要类的一种更简单的方法是解析所有变量。例如,查找所有大写字母并将其替换为使用eval解析函数时对应的数字。

$formula = "A * B / (C + 3)";
$A = 3;
$B = 4;
$C = 2;
$vars = get_defined_vars(); 
//Get all variables in current context
foreach($vars as $key => $value) {
  if(is_numeric($value)) {
  $formula = str_replace($key, $value, $formula); 
  }       
}
eval('$result=' . $formula . ';');
echo '$result=' . $result . "<br />";

PS:小心eval括号内的恶意代码