如何处理嵌入字符串中的变量?字符串来自数据库,所以这是一个例子:
1: $b='World!';
2: $a='Hello $b'; #note, I used single quote purposely to emulate the string was originally from the database (I know the different of using ' or ").
3: eval($c=$a.";"); #I know this would not work, but trying to do $c="Hello $b";
#With line 3 PHP code, I am trying get the outcome of $c='Hello World!';
答案 0 :(得分:2)
如果您想要评估代码行$c='Hello World';
,那么您应该有一个字符串,在echo
编辑时,您将获得完全相同的字符:$c="Hello $b";
。
所以 - 首先,你的$c
变量应该在一个字符串内(而不是一个变量);
'$c'
接下来 - =
符号应该在字符串中(而不是作为php代码的一部分,否则预处理器会尝试将右侧的值赋给左侧的变量。
这个怎么样:
$new_str = '$c=' . $a . ';';
echo $new_str;
现在您可以看到$new_str
中的值实际上是:
$c=Hello $b;
哪个不一个有效的PHP代码(因为你在PHP中没有Hello。你真正想要的是在双引号中包含Hello $ b部分:
$new_str = '$c="' . $a . '";';
只有现在你可以评估这个。
所以你的最终代码应该是这样的:
$b='World!';
$a='Hello $b';
eval('$c="' . $a . '";');
echo $c; // Hello World!