文字列として定義された数式を、php上で計算したいと思っています。
基本的な、+ - * / という4種類の計算で、
数式には入れ子の括弧と、小数点等もあります。
数式例: 1+2 2*3/4 3/4*(5+6) 4-(5*(6.6-7)*8)/(9.9+10/11)
最初は、正規表現を使い、数値と、演算用の記号 +-*/.() にマッチした場合のみ、
evalで計算をしようと考えておりました。
しかし、「どんな状況でもevalは使わないほうが良い」という意見があります。
また、例えば、1**5 というような形で、数式に誤りがあるとevalを実行したときにsyntax errorが発生するため、できればそのようなエラーも避けたいと思っています。
数式をパースして計算する関数を自作することも考えましたが、どうも複雑になりそうで自信がありません。
このように、様々な数式の文字列を、evalを用いずに計算させる良い方法はあるのでしょうか。
また、関連するライブラリなどはあるのでしょうか?
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/15 02:51