在php字符串中执行计算

在php字符串中执行计算,php,string,numbers,Php,String,Numbers,我有一根像 $str = "23 + %%val%%"; 现在,如果我想执行这个计算,给%%val%%一个值,例如20,我该怎么做?你不能。PHP不是递归可执行的,除非您使用eval()(不要使用eval())。你为什么不能这么做 $str = 23 + $val; ? 这将回音30 这里还有一篇关于这个的帖子 然后,要执行计算,需要一个函数,该函数接受字符串并分解整数和运算符。由于php不是强类型的,而且您可以轻松地将字符串转换为整数,这似乎是一种浪费。如果您真的想保留这种格式,可以执行以

我有一根像

$str = "23 + %%val%%";

现在,如果我想执行这个计算,给
%%val%%
一个值,例如20,我该怎么做?

你不能。PHP不是递归可执行的,除非您使用
eval()
不要使用
eval()
)。你为什么不能这么做

$str = 23 + $val;
?

这将回音30

这里还有一篇关于这个的帖子


然后,要执行计算,需要一个函数,该函数接受字符串并分解整数和运算符。由于php不是强类型的,而且您可以轻松地将字符串转换为整数,这似乎是一种浪费。

如果您真的想保留这种格式,可以执行以下操作:

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()语言构造非常危险,因为它允许执行任意PHP代码


$str=”“。(23+$val)23与$val:(因为23在$str中:(
$str = "23 + {$value}"
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)