我有一个像
这样的字符串$str = "23 + %%val%%";
现在,如果我想执行此计算,为%%val%%
提供一个值,例如20,我该怎么办?
答案 0 :(得分:1)
你不能。 PHP不是递归可执行的,除非您使用eval()
( DON' T 使用eval()
)。为什么你不能做
$str = 23 + $val;
答案 1 :(得分:0)
$a = 10;
$b = 10;
$c = 10;
$string = "a + b + c";
$result = eval('return ' . preg_replace('/([a-zA-Z0-9])+/', '\$$1', $string) . ';');
echo $result;
这将回响30。
这里有另外一篇关于此事的帖子Calculate a sum in a string
答案 2 :(得分:0)
$str = "23 + {$value}"
然后,要执行计算,您需要一个接受字符串并分解整数和运算符的函数。看起来像浪费,因为php没有强类型,你可以轻松地将字符串转换为整数。
答案 3 :(得分:0)
如果你真的想保留这种格式,你可以这样做:
function calculate($string, $value) {
return str_replace('%%val%%', $value, $string);
}
$str = "23 + %%val%%";
$value = 25;
$result = eval('return '.calculate($str, $value).';');
var_dump($result); // int(48)
$result = eval('return '.calculate("16 + %%val%%", 10).';');
var_dump($result); // int(26)
但请注意eval(参见:eval()
)
eval()语言结构非常危险,因为它允许执行任意PHP代码。