PHPのeval関数を使用しようとしています。しかし、解析エラーの処理に行き詰まっています。1..または1++のようなエッジケースがあるかどうかを検討するのと同じように、解析エラーが発生した場合:構文エラー、.....
構文エラーの処理方法やエラーメッセージを回避する方法を知っている人はいますか? より良いエラーメッセージを表示したい。
また、エラーメッセージを変数に保存することは可能ですか?
ティア
PHPのeval関数を使用しようとしています。しかし、解析エラーの処理に行き詰まっています。1..または1++のようなエッジケースがあるかどうかを検討するのと同じように、解析エラーが発生した場合:構文エラー、.....
構文エラーの処理方法やエラーメッセージを回避する方法を知っている人はいますか? より良いエラーメッセージを表示したい。
また、エラーメッセージを変数に保存することは可能ですか?
ティア
説明書より
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";
}
$response = @eval($string);
if (error_get_last()){
echo 'Show your custom error message';
//Or you can
print_r(error_get_last());
}
マニュアルから:
評価されたコードに解析エラーがある場合は、
eval()戻りFALSE、次のコードの実行が通常どおり続行されます。eval()を使用して解析エラーをキャッチすることはできませんset_error_handler()。
evalしかし、任意のコードを呼び出すことはないので(そうですか?)、これは問題にはなりません。