Я пытаюсь использовать функцию eval для php. но я застрял в обработке ошибки синтаксического анализа. например, если у меня есть краевые случаи, такие как 1 .. или 1 ++, если дает мне ошибку синтаксического анализа: синтаксическая ошибка, …..
кто знает, как обрабатывать синтаксическую ошибку или как обходить сообщение об ошибке? Я хочу дать лучшее сообщение об ошибке.
также можно ли сохранить сообщение об ошибке переменной?
ТИА
$response = @eval($string); if (error_get_last()){ echo 'Show your custom error message'; //Or you can print_r(error_get_last()); }
Из руководства
Начиная с 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"; }
Из руководства :
Если в оцененном коде есть ошибка синтаксического анализа,
eval()
возвращаетFALSE
и выполнение следующего кода продолжается нормально. Невозможно поймать ошибку синтаксического анализа вeval()
используяset_error_handler()
.
Но как вы не будете называть eval
на произвольный код (правильно?), Это не должно быть проблемой.