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

时间:2014-07-21 10:37:10

标签: 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

1 个答案:

答案 0 :(得分:1)

您可以使用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);