为什么在eval语句中变量之前存在反斜杠?

时间:2015-01-08 07:43:02

标签: php eval

在线学习PHP时,我停止了这个eval功能,请帮助我。为什么在$str2语句中eval之前有斜杠?

<?php
$string = "beautiful";
$time = "winter";

$str = 'This is a $string $time morning!';
echo $str. "<br>";

eval("\$str2 = \"$str\";");
echo $str2;
?>

4 个答案:

答案 0 :(得分:1)

斜线逃脱美元符号,否则双引号中美元符号开始变量名称。

echo $var; // print the content of $var
echo "$var"; // print the content of $var
echo "\$var"; // print '$var'
echo '$var'; // print '$var'

另一件事是你应该找到另一本书来学习。 Usign eval是不推荐的,在这种情况下是坏的。

代码的最后两行应该是:

$str2 = $str;
echo $str2;

或者只是

echo $str;

答案 1 :(得分:0)

eval将字符串解析为php代码,如果要删除它们,$str$str2将被eval解析之前将被其内容替换。

所以使用反斜杠它会解析

$str2 = "This is a beautiful winter morning!";

没有反斜杠就会解析

undefined = "This is a beautiful winter morning!";

答案 2 :(得分:0)

因为它有助于识别使用该变量,并且编译器识别带有反斜杠的变量,然后变量名称将替换为它所代表的值。

答案 3 :(得分:0)

反斜杠用于识别PHP特殊字符。在这种情况下,\ $ str2表示一个字符串包含&#34; $ str&#34;不是一个名为$ str的变量,它是值&#39;这是$ string $ time morning!&#39;。所以\ $同时打印为字符串$而不​​是变量。