Вы, вероятно, должны использовать eval()
.Как и в других языках программирования, PHP eval()
также мощный и опасный - будьте осторожны.
Если вы напишите что-то вроде следующего кода:
if (eval("$var_1 $comparison $var_2")) {
// ...
}
Это не будет работать.Потому что PHP eval()
не оценивает выражение , а просто выполняет оператор .Таким образом, вы должны сделать так:
eval("\$condition = $var_1 $comparison $var_2;"); // semicolon required!
if ($condition) {
// ...
}
Это будет работать хорошо, за исключением того, что $var_1
или $var_2
не число.Например, если $var_1
является строкой, подобной 'hello'
, код, выполняемый eval()
, становится:
eval("\$condition = hello > 2;");
Чтобы избежать взлома этого кода, вы должны избегать знаков доллара $var_1
и $var_2
:
eval("\$condition = \$var_1 $comparison \$var_2;"); // don't escape $comparison's.