整数结果中的字符串表达式

时间:2012-03-12 07:59:08

标签: php regex

经过大量的操作,我有一些喜欢:

$exr = "2+3/1.5";

如何获得此表达式的结果?像这样:

$result = (floatval)$exr; // show: 4

当然它不起作用。我只有2,第一个符号。 有什么简单的方法可以解决这个问题吗?

6 个答案:

答案 0 :(得分:3)

您可以像这样使用PHP eval函数:

$exr = '2+3/1.5';
eval('$result = ' . $exr . ';');
var_dump($result);
// float(4)

仔细阅读本说明

  

警告:eval()语言结构非常危险,因为它允许   执行任意PHP代码。因此不鼓励使用它。如果你   仔细确认除了使用它之外别无选择   构建时,要特别注意不要传递任何用户提供的数据   没有事先正确验证它就进入它。

答案 1 :(得分:2)

Eval is EVIL

我不知道为什么这里的每个答案都告诉你这样做?但要避免使用它。

这是非常好的功能,可以做同样的没有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和特殊字符,例如“;:'。