我正在尝试使用php的eval函数。 但我一直在处理解析错误。 喜欢考虑我是否有像1 ..或1 ++这样的边缘情况 如果给我解析错误:语法错误,.....
任何人都知道如何处理语法错误或如何绕过错误消息? 我想提供更好的错误消息。
是否可以将错误消息存储到变量?
TIA
答案 0 :(得分:15)
来自manual
从PHP 7开始,如果评估代码中存在解析错误,
eval()
会抛出ParseError
异常。在PHP 7之前,在这种情况下eval()
返回FALSE
并继续正常执行以下代码。使用eval()
{/ 1}}无法在set_error_handler()
中捕获解析错误。
而是使用它:
<?php
try {
eval('will cause error');
} catch (ParseError $e) {
echo 'Caught exception: '.$e->getMessage()."\n";
}
答案 1 :(得分:12)
$response = @eval($string);
if (error_get_last()){
echo 'Show your custom error message';
//Or you can
print_r(error_get_last());
}
答案 2 :(得分:2)
来自manual:
如果评估代码中存在解析错误,
eval()
将返回FALSE
并继续执行以下代码。使用eval()
{/ 1}}无法在set_error_handler()
中捕获解析错误。
但是你不会在任意代码上调用eval
(对吗?),这应该不是问题。