I\'m trying to use the eval function for php. but I\'m stuck in handling the parse error. like considering if I have edge cases like 1.. or 1++ if gives me parse error:synta
$response = @eval($string);
if (error_get_last()){
echo 'Show your custom error message';
//Or you can
print_r(error_get_last());
}
From the manual
As of PHP 7, if there is a parse error in the evaluated code,
eval()
throws aParseError
exception. Before PHP 7, in this caseeval()
returnedFALSE
and execution of the following code continued normally. It is not possible to catch a parse error ineval()
usingset_error_handler()
.
Instead use this:
<?php
try {
eval('will cause error');
} catch (ParseError $e) {
echo 'Caught exception: '.$e->getMessage()."\n";
}
https://3v4l.org/1giOS
From the manual:
If there is a parse error in the evaluated code,
eval()
returnsFALSE
and execution of the following code continues normally. It is not possible to catch a parse error ineval()
usingset_error_handler()
.
But as you won't be calling eval
on arbitrary code (right?), this shouldn't be a problem.