只是试图找出执行数学运算的正确和更安全的方式作为字符串传递.在我的场景中,它是从图像EXIF数据中获取的值.
经过一些研究,我发现了两种方法.
首先,使用eval:
function calculator1($str){
eval("\$str = $str;");
return $str;
}
Run Code Online (Sandbox Code Playgroud)
第二,使用create_function:
function calculator2($str){
$fn = create_function("", "return ({$str});" );
return $fn();
};
Run Code Online (Sandbox Code Playgroud)
这两个示例都需要清理字符串以避免恶意代码执行.有没有其他或更短的方式这样做?
我只是想知道PHP是否有一个函数可以采用字符串2-1并产生它的算术结果?
或者我是否必须手动执行此操作explode()以获取算术运算符的左右值?
我在字符串敌人的例子中得到了公式
$a = '1*2*(2+3)';
echo eval($a) // Output should be 10
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试评估此字符串并使用eval,但在PHP 7中给我这个错误不鼓励使用eval(),所以我如何评估此字符串.