Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在逻辑操作中替换eval()php_Php_Laravel_Eval - Fatal编程技术网

在逻辑操作中替换eval()php

在逻辑操作中替换eval()php,php,laravel,eval,Php,Laravel,Eval,我在做逻辑验证,比如 $answer = eval("return ".$stringToValidate.";"); 其中$stringToValidate是一个逻辑表达式,如“a”==“b”或100

我在做逻辑验证,比如

$answer = eval("return ".$stringToValidate.";"); 
其中$stringToValidate是一个逻辑表达式,如“a”==“b”或100<200


问题是,当我引入一个无效字符串时,如a=='b'或100,如果使用PHP7,则可以使用ParserError:

错误报告全部

$stringToValidate = "'a == 'b'";

try {
    $answer = eval("return ".$stringToValidate.";");
} catch(Exception $e){
    return $e->getMessage();
} catch (ParseError $e) {
    echo 'Bad request !';
}

编辑:请参见cmbuckley comment

a=='b'在我尝试时生成警告,而不是异常。100个更好的副本:-TL;DR use PHP7 and catch ParseError.@cmbuckley干杯,我已将其添加到重复列表中。谢谢,我刚刚注意到将来自己也可以这样做的链接-@ceejayoz是否存在捕获该解析错误的任何形式?
$stringToValidate = "'a == 'b'";

try {
    $answer = eval("return ".$stringToValidate.";");
} catch(Exception $e){
    return $e->getMessage();
} catch (ParseError $e) {
    echo 'Bad request !';
}