使用PHP计算字符串中的数学运算


Evaluate mathematical operations inside a string using PHP

我想在字符串中得到一个数学运算后计算它。这里是字符串

$string = "Add this two numbers [4+2+2]. And [5*3/2] will result to?"

我已经得到那些数字了:

$f_number = "4+2+2";
$s_number = "5*3/2";

我如何使用任何函数自动评估这个?示例:

echo anyfunction($f_number);//will result to 8
echo anyfunction($s_number);//will result to 7.5

因为如果我直接回显它会输出这样的内容:

echo $f_number;//will result to 4+2+2
echo a$s_number;//will result to 5*3/2

您可以使用eval。这可能是最简单的出路。请注意,它也可以用于其他表达式,因为它基本上执行字符串中的任何PHP代码。

但是,通过像您预期的那样将其包装在函数中,您至少可以将其黑盒化,并在需要时添加安全措施,甚至可以切换到不同的表达式求值器,而无需更改所有代码。

一个简单的安全措施是检查字符串是否只包含数值、空格和允许的操作符。这样就不可能秘密地注入实际的代码。

function anyfunction($expr)
{
  // Optional: check if $expr contains only numerics and operators
  // actual evaluation. The code in $expre should contain a return 
  // statement if you want it to return something.
  return eval("return $expr;");
}
echo anyfunction($f_number);