Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to handle parse error for eval function in php

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

like image 442
ordinaryman09 Avatar asked Nov 28 '22 07:11

ordinaryman09


2 Answers

From the manual

As of PHP 7, if there is a parse error in the evaluated code, eval() throws a ParseError exception. Before PHP 7, in this case eval() returned FALSE and execution of the following code continued normally. It is not possible to catch a parse error in eval() using set_error_handler().

Instead use this:

<?php

try {
    eval('will cause error');
} catch (ParseError $e) {
    echo 'Caught exception: '.$e->getMessage()."\n";
}

https://3v4l.org/1giOS

like image 151
yceruto Avatar answered Dec 03 '22 23:12

yceruto


$response = @eval($string);
if (error_get_last()){
    echo 'Show your custom error message';
    //Or you can 
    print_r(error_get_last());
}
like image 45
Nanhe Kumar Avatar answered Dec 03 '22 22:12

Nanhe Kumar