ОБНОВЛЕНИЕ: Я понимаю, что есть недостатки с eval (), но я "должен" использовать его для этой конкретной проблемы. Поэтому любое решение проблемы должно иметь это в виду.
Я только начинаю работать с PHP в своем классе и реализую очень ограниченный калькулятор с использованием регулярных выражений (в частности, с preg_match ()) и eval (). Одна из особенностей калькулятора заключается в том, что, когда ему вводится неправильный ввод, отображается простое написанное мной сообщение об ошибке, а не ошибки PHP по умолчанию. Это работает для большинства некорректных входных данных (строки с буквами, несколько операторов в строке и т. Д.), Но я не смог обнаружить другие виды ошибок. В частности, входы:
0/0
и тому подобные
2--1
Последнее выражение технически правильно сформировано, но я не обязан его обрабатывать (предположительно, чтобы сделать наш код проще, поскольку это простой проект для знакомства с PHP), и вместо этого может вывести мое простое сообщение об ошибке в виде ответ. Калькулятор не поддерживает скобки, поэтому выражение вроде
2-(-1)
будет недействительным. Проблема в том, что я не могу понять, что eval () возвращает при обнаружении подобных вещей, если вообще вообще возвращается.
Всегда ли eval () возвращается? Я прочитал документацию по eval () несколько раз, но все еще не могу понять, какие вещи я должен проверять. Я предпочел бы получить объяснение того, что проверять и почему, а не просто слепо проверять возвращаемые значения и их дополнения, пока я не выясню это. Ниже приведены скриншоты двух ошибок, описанных выше (у меня недостаточно репутации, чтобы вставлять их здесь). Любая помощь будет оценена!
Ошибка деления на ноль
Ошибка нескольких операторов