how to handle parse error for eval function in php

后端 未结 3 677
陌清茗
陌清茗 2021-01-19 09:25

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

相关标签:
3条回答
  • 2021-01-19 10:04
    $response = @eval($string);
    if (error_get_last()){
        echo 'Show your custom error message';
        //Or you can 
        print_r(error_get_last());
    }
    
    0 讨论(0)
  • 2021-01-19 10:18

    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

    0 讨论(0)
  • 2021-01-19 10:24

    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.

    0 讨论(0)
提交回复
热议问题