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

时间:2012-04-10 08:13:16

标签: php error-handling syntax-error

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

任何人都知道如何处理语法错误或如何绕过错误消息? 我想提供更好的错误消息。

是否可以将错误消息存储到变量?

TIA

3 个答案:

答案 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";
}

https://3v4l.org/1giOS

答案 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(对吗?),这应该不是问题。