我想在字符串中得到一个数学运算后计算它。这里是字符串
$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);