PHP计算器有一个输入字段

时间:2011-06-14 06:32:54

标签: php input

我需要有一个文本输入字段做或不做基本计算。实施例

<input type="text" />

然后我通过邮寄提交,帖子将知道输入值或进行计算

值示例

14.5
10.3+14+35

应该分别给我

14.5
59.3

有没有人知道方法,脚本......这样做的事情是什么?或者关于如何去做的任何想法?

感谢。

3 个答案:

答案 0 :(得分:4)

不使用eval,但你仍需要小心并抓住任何解析错误,例如尝试评估')'等。我有想法,但会留给读者或另一个下雨天。

reference site

function calculate_string( $mathString ) {

    // trim white spaces
    $mathString = trim($mathString);

    // remove any non-numbers chars; exception for math operators
    $mathString = ereg_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString);

    $compute = create_function("", "return (" . $mathString . ");" );
    return 0 + $compute();

}

$string = " (1 + 1) * (2 + 2)";
echo calculate_string($string);  // outputs 8  

答案 1 :(得分:0)

使用以下正则表达式,您可以检查输入是否是有效的数学语法并使用eval():

/^(\(*[\+\-]?\(*[\+\-]?\d+(.\d+)?\)*[\+\-\*\/]?)*$/

允许的字符是:1 2 3 4 5 6 7 8 9 0。 + - * /()

答案 2 :(得分:-1)

一个快速的解决方案是使用substr()检查输入中是否包含任何数学运算符(+, - ,...)。如果是这样,使用eval()进行数学计算(非常脏的黑客,因为它接受所有PHP代码而不仅仅是数学)或手动构建适当的操作树,然后生成结果。如果没有数学运算符,只需打印输入。