使用PHP处理字符串中的嵌入变量

时间:2016-11-06 00:15:58

标签: php eval

如何处理嵌入字符串中的变量?字符串来自数据库,所以这是一个例子:

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!';

1 个答案:

答案 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!