PHPで文字列を解釈し、簡単な数学計算を実行して、式がtrueかfalseかについてブール結果を返すことができるものを探しています。
例えば:
- 「3*{mysalary} / 9=10000」のタイプを訴える
- PHPは、これを2つの式に分割します-explode('='、string);
- PHPはデータベースフィールドのリストを取得し、「{}」で区切られたフィールドをデータ(intにタイプキャスト)に置き換えます。
- 次に、PHPは数式を評価します
- 次に、phpは左側と右側を比較します
- ブール結果が生成されました。
複雑に聞こえるかもしれませんが、必要なのは非常に単純なことだけです。制約は次のとおりです。1/数学演算子は次のように固定されます:+-/ * 2 /比較演算子は次のように固定されます:=> <> = <= 3 /浮動小数点比較は必要ありません。すべて、整数レベルで実行できます。したがって、必要に応じて、または単に最終結果を丸めるだけで、任意の除算を丸めることができます。
1つの比較演算子を使用して、式は2つだけになります。なんらかのエラーが発生した場合は、falseを返します。
誰かがすでにこれを行うことができる何かを見たことがありますか?私は何かを作ることができることを知っていますが、なぜ車輪の再発明を正しく行うのですか?
何も見たことがない場合は、これを作成するときに考えられる「落とし穴」または警告をいくつか挙げてください。
もう少し読んだ後、私は操車場アルゴリズムを使用できることに気付きました。PHPでこれを実装している人はいますか?
evalはこれを実行する簡単な方法である可能性があることは承知していますが、ユーザーがこの方法を使用して何かを簡単に壊したり、構文エラーを引き起こしたりする可能性があるのではないかと心配しています。ソリューションに含めたくない、または含める場合は、使用方法を厳密に制御する必要があります。
ありがとう。
ジェイソン