如果是按照例子里面把
(a+b)*c变成($a+$b)*$c,等于是直接修改PHP源代码,让一个PHP脚本修改它自身,然后执行,感觉不可能。如果是要求能够验证表达式的合法性,解读出来,并且直接把值替换进去,然后计算,感觉就是跟做解释器(interpreter)差不多了。
(a+b)*c变成($a+$b)*$c,等于是直接修改PHP源代码,让一个PHP脚本修改它自身,然后执行,感觉不可能。如果是要求能够验证表达式的合法性,解读出来,并且直接把值替换进去,然后计算,感觉就是跟做解释器(interpreter)差不多了。
的确可以用javscript 的 eval 函数.
因为通过表达式得出结果后,还得继续php处理,所以eval还是有点不足..
$b = 2;
$c = 3;
$code = '(a+b)*c';/*任意公式 */$expr = preg_replace("/\b[a-z]\w*/i", "$$0", $code);echo eval("return $expr;");