在PHP中没有eval可以计算变量表达式吗?

时间:2012-02-26 23:22:56

标签: php math

该表达式用于计算Gettext的复数形式。例如:

$expr = 'n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2';

与eval我正在做类似的事情:

$expr = str_replace('n','$n', $expr);

$n = 5;
$result = (int)eval("return $expr;");

这可以在没有eval的情况下完成吗?

1 个答案:

答案 0 :(得分:3)

即使有可能构建一个能够解析有限数量的解析器(你只需要琐碎的数学运算符来计算复数),但就你花在实现它和性能上的时间而言,它是不值得的(显然它会慢一点。

因此,我个人会使用eval(),或者只是为每种语言实现一个多元化的函数。

只要其输入是由您预定义的,我认为eval不是“邪恶”的情况之一