Ограничения для PHP eval

У меня есть логические выражения, которые мне нужно оценить. После того, как какой-либо шаблон выражения, параметризованный параметрами, эти выражения могут выглядеть так:

$expr1 = '1 or 0 and not(0 or 0)'; $expr2 = "'editor' == 'editor' and not(0 = 1) and 10 > 5"; 

Поэтому мне нужно обрабатывать числа, строковые литералы, а также логические и алгебраические операторы и круглые скобки между ними.

При использовании PHP eval я также получаю нежелательные необеспеченные способности, такие как вызов системной функции и т. Д.

Итак, есть ли способ ограничить PHP eval или может быть какое-то лучшее решение?

Благодаря!

Solutions Collecting From Web of "Ограничения для PHP eval"

Вы можете использовать токенизатор для проверки того, что выражения не содержат вызовов функций.

См. Пример безопасного класса eval () .

Хорошо, у меня есть другое решение. Я понял, что могу использовать PHP DOMXPath :: для оценки моего логического выражения. Итак, у меня есть рабочее решение, которое не имеет проблем с безопасностью. Я думаю, что моя проблема решена 🙂