2016-11-14 7 views
0

Я получаю формулу в строке недруга напримерEval не рекомендуется в PHP 7

$a = '1*2*(2+3)'; 
echo eval($a) // Output should be 10 

Теперь я пытаюсь оценить эту строку и использовать Eval для этого, но в PHP 7 дает мне эту ошибку Использование Eval() не рекомендуется, так как я могу оценить эту строку.

ответ

0

manual говорит;

Внимание

Конструкт язык Eval() очень опасно, потому что она позволяет выполнение произвольного кода PHP. Поэтому его использование не рекомендуется. Если вы тщательно проверили, что нет другого выбора, кроме как использовать эту конструкцию , обратите особое внимание на то, чтобы не передавать никакие предоставленные пользователем данные без надлежащей проверки.

Что касается альтернативы касается, вы можете попробовать это решение, данное в теме: calculate math expression from a string using eval

5

PHP never raises any such error: Вы должны быть подозрительными, что третья сторона вмешалась установки, возможно, установили какой-то " безопасности ", которое изменяет поведение PHP.

Все такие расширения не санкционированы проектом PHP и ужасны.

Несмотря на то, что в руководстве говорится об eval, есть no technical difference между включением файла и обходом некоторого кода.

Единственная разница в реальном мире заключается в том, что код eval'd может содержать пользовательский ввод: санитаризация и фильтрация пользовательского ввода является проблемой для приложений PHP, которые не используют eval.

Примечание: вам не хватает отдачи от вычисленного выражения

0

Вы не можете использовать echo на eval(), если вы используете return в оцениваемой коде.

eval() возвращается NULLreturn если вызывается в оцениваемой кода

См: http://php.net/manual/en/function.eval.php

Так что вы можете сделать:

$a = 'echo 1*2*(2+3);'; 
eval($a); 

или

$a = 'return 1*2*(2+3);'; 
echo eval($a);