PHP 实现字符串表达式计算
什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:
"$age >= 20"
,$age
的值是动态的整型变量。什么是字符串表达式计算?即,我们需要一段程序来执行动态的表达式,如给定一个含表达式的字符串变量并计算其结果,而表达式字符串是动态的,比如为客户A执行的表达式是
$orderCount >= 10
,而为客户B执行的表达式是$orderTotal >= 1000
。场景在哪儿?同一份程序具有完全通用性,但差异就其中一个表达式而已,那么我们需要将其抽象出来,让表达式变成动态的、可配置的、或可生成的。
方案一:eval 函数
eval
函数可能是我们第一个想到的方案,也是最简单直接的方案。我们来试验下:
|
|
嗯~完全能满足我们的需求,因为 eval
函数执行的 PHP 表达式,只要字符串内表达式符合 PHP 语法就行。
但需注意的是,eval
函数可执行任意 PHP 代码,也就意味着权限大、风险高、不安全。如果你的字符串表达式来自于外部输入,那务必注意了请自行做好安全检查和过滤,并考虑风险。当然,执行的是外部输入表达式,非常不建议使用此函数。