回答編集履歴

1

追記: 例外の処理

2017/02/21 02:27

投稿

ikedas
ikedas

スコア4317

test CHANGED
@@ -2,3 +2,9 @@
2
2
 
3
3
  本格的な構文解析をしてもいいのですが、整数の四則演算のみ (括弧は使わない) という条件だとするなら、正規表現によるチェック (数字と演算記号だけを含むかどうか) で用は足りるでしょう。
4
4
 
5
+ (追記)
6
+
7
+ PHP7以降では、evalは構文エラーとなる引数を与えると`ParseError`例外を投げるので、捕捉してやる必要があります。なお、手元で確認したかぎり、引数に与えたコードを実行中に`ArithmeticError` (ゼロ除算など) が発生しても例外を投げることはなく、`NULL`を返すようです (確認バージョン: PHP 7.0.8)。
8
+
9
+ PHP5では、上のような場合はいずれも`FALSE`を返します。
10
+