经过大量的操作,我有一些喜欢:
$exr = "2+3/1.5";
如何获得此表达式的结果?像这样:
$result = (floatval)$exr; // show: 4
当然它不起作用。我只有2,第一个符号。 有什么简单的方法可以解决这个问题吗?
答案 0 :(得分:3)
您可以像这样使用PHP eval
函数:
$exr = '2+3/1.5';
eval('$result = ' . $exr . ';');
var_dump($result);
// float(4)
仔细阅读本说明:
警告:eval()语言结构非常危险,因为它允许 执行任意PHP代码。因此不鼓励使用它。如果你 仔细确认除了使用它之外别无选择 构建时,要特别注意不要传递任何用户提供的数据 没有事先正确验证它就进入它。
答案 1 :(得分:2)
我不知道为什么这里的每个答案都告诉你这样做?但要避免使用它。
这是非常好的功能,可以做同样的没有eval() Source
function calculate_string( $mathString ) {
$mathString = trim($mathString); // trim white spaces
$mathString = ereg_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString); // remove any non-numbers chars; exception for math operators
$compute = create_function("", "return (" . $mathString . ");" );
return 0 + $compute();
}
将其用作
$exr = '2+3/1.5';
echo calculate_string($exr);
答案 2 :(得分:1)
您可以使用eval功能:
$result = eval($exr); // show: 4
答案 3 :(得分:1)
尝试:
$exr = "2+3/1.5";
echo eval("return $exr;"); //shows 4
答案 4 :(得分:0)
你可以使用eval。
$result = eval($exr);
答案 5 :(得分:0)
最简单的方法是通过eval()运行它,但这是非常不安全的。为安全起见,我建议过滤某些字符,例如a-z和特殊字符,例如“;:'。