如何在php中处理eval函数的解析错误

ord*_*n09 4 php error-handling syntax-error

我正在尝试使用php的eval函数.但我一直在处理解析错误.喜欢考虑我是否有像1 ..或1 ++这样的边缘情况如果给我解析错误:语法错误,.....

有谁知道如何处理语法错误或如何绕过错误消息?我想提供更好的错误消息.

还可以将错误消息存储到变量中吗?

TIA

yce*_*uto 15

手册

从PHP 7开始,如果评估的代码中存在解析错误,则eval()抛出ParseError异常.在PHP 7之前,在这种情况下eval()返回FALSE并继续执行以下代码.这是不可能赶上解析错误的eval()使用set_error_handler().

而是使用这个:

<?php

try {
    eval('will cause error');
} catch (ParseError $e) {
    echo 'Caught exception: '.$e->getMessage()."\n";
}
Run Code Online (Sandbox Code Playgroud)

https://3v4l.org/1giOS


Nan*_*mar 12

$response = @eval($string);
if (error_get_last()){
    echo 'Show your custom error message';
    //Or you can 
    print_r(error_get_last());
}
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 2

手册中:

如果计算的代码中存在解析错误,eval()则返回FALSE并正常继续执行以下代码。eval()使用时不可能捕获解析错误set_error_handler()

但由于您不会调用eval任意代码(对吗?),这应该不是问题。