1

我喜欢解决通过 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;
4

1 回答 1

-2

您可以使用正则表达式或字符串操作函数将其解析为字符串。

您可以使用第三方类,检查 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 括号内的恶意代码。

于 2013-03-03T16:18:51.657 回答