我想在字符串中得到它之后评估字符串中的数学运算。 这是字符串
$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
答案 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);