PHP:我有一个字符串,其中包含数学运算。我该怎么运行它?

时间:2011-12-11 07:57:01

标签: php math

(请注意,它已被用户输入,因此我无法对其进行硬编码)。无论如何,用户输入math.php?do = 2 + 2,结果脚本将返回4。另一件事是输入经过严格验证,因此没有恶意可能性。我的测试方法就是这个

function testMath($char){
    $array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    foreach($char as $chr){
        if(!in_array($chr, $array['math'){
            return false;
        }
    }
    return true;
}

eval()检查的内容是否安全?或者我应该忘记用户输入的输入数学?

旁注,PHP抛出

Parse error: parse error in C:\Users\Josh\Desktop\App\html\new.php(24) : eval()'d code on line 1

当我尝试eval()时。怎么了?

1 个答案:

答案 0 :(得分:1)

我不确定你是如何使用eval()的,因为你没有发布你的代码部分。但是如果你要评估代码,你需要指定它将保存到的变量:

修改了testMath:

function testMath($char){
    if(strlen($char) > 10) return false;
    $array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    foreach($char as $chr){
        if(!in_array($chr, $array['math'){
            return false;
        }
    }
    return true;
}

$math = $_GET['do'];
if(testMath($math)) eval("$result = " . $math . ";");

echo $math, ' = ', $result;