使用字符串变量作为php中if语句的条件而不使用eval()

时间:2013-10-05 20:00:35

标签: php security if-statement

我的条件是由代码生成的字符串,如下所示:

$mycondition = "(strpos(strtolower($foo1), strtolower($bar)) !== false) AND (strpos(strtolower($foo1),  strtolower($bar2)) !== false) // AND ((strpos(strtolower($foo2),  strtolower($bar1)) !== false)) AND..."; ad infinitum

我的if语句应该是:

if ($mycondition) then...

我可以像这样使用eval():

if (eval("return $mycondition;")) then...

但我理解eval()不推荐练习。在搜索论坛时,我看到许多声音反对使用eval(),但没有多少替代品。

有什么替代方案?如何将生成的字符串放入if条件?

1 个答案:

答案 0 :(得分:1)

一个解决方法是在生成条件的地方,只有你可以进行比较并在结尾生成一个布尔值,稍后你可以在代码中。