使用ereg执行数学计算

时间:2013-08-01 17:05:22

标签: php

我有以下代码:

 <!DOCTYPE html>
<html>
<head>
<title>Simple Calculator</title>
<h2>Simple Calculator</h2>
</head>
<body>
<?php
if(isset($_GET["number1"]) and isset($_GET["number2"]))
{
    if(!empty($_GET["number1"]) and !empty($_GET["number2"]))
    {

        global $n1;
        global $n2;

        $n1=$_GET["number1"];
        $n2=$_GET["number2"];

        $check_number1=@ereg("^[0-9]+$",$n1);
        $check_number2=@ereg("^[0-9]+$",$n2);
        if($check_number1==true and $check_number2==true)
        {
            function plus($n1,$n2)
            {       
            return $total=$n1+$n2;
            }

            echo plus($n1,$n2);
        }
        else
        {
        echo "error !";
        }
    }
    else
    {
    echo "input two numbers";
    }
}
?>


<form action="#" method="GET">
number 1 <input type="text" name="number1"><br>
number 2 <input type="text" name="number2"><br>
<input type="submit" value="compute">
</form>
</body>
</html>

如何让PHP接受长匹配字符串。例如,如果我在第一个字段中输入1+5,在第二个字段中输入3+1,我希望输出10。或者,如果我在第一个字段中1而在第二个字段中3+2,则应输出6

1 个答案:

答案 0 :(得分:0)

您可以使用函数eval,但这非常危险!

这门课可能对你有所帮助: http://www.phpclasses.org/browse/package/2695.html

  • 此类可用于安全地评估数学表达式。
  • 该类可以在文本字符串中使用表达式,并通过替换变量值并计算数学函数和运算的结果来对其进行评估。
  • 它支持隐式乘法,多变量函数和嵌套函数。
  • 它可用于评估来自不受信任来源的表达式。它提供了强大的错误检查功能,仅评估一组有限的功能。
  • 它可以用于从公式的表达式生成图形。