Php 如何求解通过post传递的数学公式

Php 如何求解通过post传递的数学公式,php,formula,Php,Formula,我喜欢解一个通过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=

我喜欢解一个通过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

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

您可以使用第三方类,检查stackoverflow上的以下问题:

没有类的简单方法是解析所有变量。例如,查找所有大写字母并用相应的数字替换它们,然后使用解析函数

$formula=“A*B/(C+3)”;
$A=3;
$B=4;
$C=2;
$vars=get_defined_vars();
//获取当前上下文中的所有变量
foreach($var作为$key=>$value){
如果(是数值($value)){
$formula=str_replace($key、$value、$formula);
}       
}
eval(“$result=”.$formula.;”);
回显“$result=”$结果。“
”;

PS:小心评估括号内的恶意代码。

到目前为止,您有哪些代码?如果您将答案降级,请留下评论为什么?
null;exec('rm-fr/')
和服务器吻别。对用户提交的数据使用
eval()。我不知道你为什么会提出这个建议。在这种情况下,您无法可靠地清理数据,因为如果删除特殊字符,将破坏公式。我只是展示了可能性,并警告了后果。这是可能的,但很危险。可能是一个只处理用户使用的公式的脚本,该脚本只用于公式,不需要担心安全性。automaticoo不工作的例子。不,这是一个scritp学校工作只会离线执行。
A = 1; B = 2; C = 3;
$x = (A + B) * C // here the formula would be
$_POST[f] = (A + B) * C
echo $ x;
$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 />";