Я ищу что-то, что может интерпретировать строку в php и выполнить простые математические вычисления, а затем вернуть логический результат относительно того, является ли выражение истинным или ложным.
Например:
- Типы Сью в "3 * {mysalary} / 9 = 10000"
- PHP разбивает это на два выражения - взорваться ('=', строка);
- PHP берет мой список полей базы данных и заменяет любые поля с разделителями "{}" данными (с типом int)
- Затем PHP вычисляет математическое выражение
- php сравнивает левую и правую стороны
- Получен логический результат.
Это может звучать сложно, но это должно быть очень просто. Вот ограничения:
1 / математические операторы фиксируются на: + - / *
2 / операторы сравнения фиксируются на: => <> = <=
3 / не нужно сравнения с плавающей запятой, все можно сделать на целочисленном уровне. Таким образом, любые деления могут быть округлены, если это необходимо, или просто округлить окончательный результат </p>
Всегда будет только два выражения с одним оператором сравнения.
Если есть какая-либо ошибка, мы просто вернем false.
Кто-нибудь видел что-то, что уже может это сделать? Я знаю, что могу что-то сделать, но зачем заново изобретать колесо, верно?
Если вы ничего не видели, можете ли вы перечислить некоторые "ошибки" или предостережения, о которых вы можете подумать при создании этого.
Прочитав еще немного, я понял, что могу использовать алгоритм маневрового двора . У кого-нибудь есть реализация этого в PHP?
Я знаю, что eval может быть простым методом для этого, однако меня беспокоит, что пользователь может очень легко что-то сломать, используя этот метод, или вызвать синтаксические ошибки. Я бы предпочел не включать его в решение, или, если я это сделаю, нужно будет жестко контролировать его использование.
Спасибо.
Jason