4

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

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

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

TIA

4

3 回答 3

17

手册

从 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";
}

https://3v4l.org/1giOS

于 2016-08-03T13:39:12.747 回答
12
$response = @eval($string);
if (error_get_last()){
    echo 'Show your custom error message';
    //Or you can 
    print_r(error_get_last());
}
于 2013-11-16T23:35:50.737 回答
2

手册

如果评估代码中存在解析错误,则eval()返回FALSE并正常继续执行以下代码。在eval()使用set_error_handler().

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

于 2012-04-10T08:15:16.810 回答