Я пытаюсь использовать функцию 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 на произвольный код (правильно?), Это не должно быть проблемой.