我想知道是否有办法在字符串中进行自动变量替换。我现在可以使用preg_replace
和strtr
来模拟这一点,但我不确定是否有更好的方法。我在考虑使用eval
,但似乎无法弄清楚如何正确使用它。
strtr
<?php
$replacement = array('$test' => "dog");
$template = 'this is a $test';
$statement = strtr($template, $replacement);
echo $statement;
?>
preg_replace
<?php
$template = 'this is a $test';
$statement = preg_replace('/\$test/', 'dog', $template);
echo $statement;
?>
eval
想法
<?php
$template = 'this is a $test';
$test = 'dog';
eval('$statement = "$template";');
echo $statement;
?>
答案 0 :(得分:1)
eval()用于评估字符串,就好像它是PHP代码一样。所以,如果你这样做了:
<?php
$template = 'this is a $test';
$test = 'dog';
eval($template);
echo $template;
?>
您会收到语法错误:
解析错误:语法错误,意外'是'(T_STRING)
因为你实际上会这样做:
<?php
$template = 'this is a $test';
$test = 'dog';
this is a $test;
echo $template;
?>
因此,您需要将其作为双引号中的字符串进行评估,以便将变量替换为其值:
<?php
$template = 'this is a $test';
$test = 'dog';
eval("\$template = \"$template\";");
echo $template;
?>
这将是这样的:
<?php
$template = 'this is a $test';
$test = 'dog';
$template = "this is a $test";
echo $template;
?>