Reputation: 2761
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:syntax error, .....
anyone knows how to handle syntax error or how to bypass the error message? I want to give a better error message.
also is it possible to store the error message to a variable?
TIA
Upvotes: 5
Views: 9868
Reputation: 9575
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";
}
Upvotes: 20
Reputation: 16297
$response = @eval($string);
if (error_get_last()){
echo 'Show your custom error message';
//Or you can
print_r(error_get_last());
}
Upvotes: 12
Reputation: 272497
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.
Upvotes: 2