Я пытаюсь создать в PHP функцию, которая будет оценивать математическое выражение, включая такие функции, как sin, cos и т. Д. Мой подход заключается в удалении всех символов в фразе, которые не являются числами, математическими операторами илиматематические функции, а затем использовать эту строку в eval ().Проблема в том, что я не знаю достаточно о регулярных выражениях, чтобы отрицать как символы, так и фразы в одном и том же выражении.
До сих пор это то, что я получил:
$input = preg_replace("/[^0-9+\-.*\/()sincota]/", "", $input);
Очевидно, что символы для sin, cos и tan могут использоваться в любом порядке во входном выражении (вместо only , допускающих фразы sin, cos и tan).Если я продолжу расширять эту функцию, включив в нее еще больше символов и функций, это представляет еще большую угрозу безопасности, поскольку злонамеренный пользователь сможет выполнить практически любую команду PHP через умное взаимодействие с приложением.
Может кто-нибудьподскажите, как исправить мои регулярные выражения и устранить эту проблему?