4

PHPのeval関数を使用しようとしています。しかし、解析エラーの処理に行き詰まっています。1..または1++のようなエッジケースがあるかどうかを検討するのと同じように、解析エラーが発生した場合:構文エラー、.....

構文エラーの処理方法やエラーメッセージを回避する方法を知っている人はいますか? より良いエラーメッセージを表示したい。

また、エラーメッセージを変数に保存することは可能ですか?

ティア

4

3 に答える 3

17

説明書より

PHP 7 以降、評価されたコードに解析エラーがある場合、例外eval()がスローされます。ParseErrorPHP 7 より前では、この場合、次のコードの実行は正常にeval()戻りました。を使用しFALSEて解析エラーをキャッチすることはできません。eval()set_error_handler()

代わりにこれを使用します:

<?php

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

https://3v4l.org/1giOS

于 2016-08-03T13:39:12.747 に答える
12
$response = @eval($string);
if (error_get_last()){
    echo 'Show your custom error message';
    //Or you can 
    print_r(error_get_last());
}
于 2013-11-16T23:35:50.737 に答える
2

マニュアルから:

評価されたコードに解析エラーがある場合は、eval()戻りFALSE、次のコードの実行が通常どおり続行されます。eval()を使用して解析エラーをキャッチすることはできませんset_error_handler()

evalしかし、任意のコードを呼び出すことはないので(そうですか?)、これは問題にはなりません。

于 2012-04-10T08:15:16.810 に答える