在php字符串中执行计算

时间:2014-09-16 15:19:10

标签: php string numbers

我有一个像

这样的字符串
$str = "23 + %%val%%";

现在,如果我想执行此计算,为%%val%%提供一个值,例如20,我该怎么办?

4 个答案:

答案 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代码。