ordinaryman09
ordinaryman09

Reputation: 2761

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

Upvotes: 5

Views: 9868

Answers (3)

yceruto
yceruto

Reputation: 9575

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

Upvotes: 20

Nanhe Kumar
Nanhe Kumar

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

Oliver Charlesworth
Oliver Charlesworth

Reputation: 272497

From the manual:

If there is a parse error in the evaluated code, eval() returns FALSE and execution of the following code continues normally. It is not possible to catch a parse error in eval() using set_error_handler().

But as you won't be calling eval on arbitrary code (right?), this shouldn't be a problem.

Upvotes: 2

Related Questions