的这段代码是从php.net手册上的eval:
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "<br>";
eval("\$str = \"$str\";");
echo $str. "<br>";
?>
我有点无法理解这行代码的作用是: eval("\$str = \"$str\";")
。
我猜测净效应是这样的:$str = "$str";
但是,当我用这个代替eval代码,我没有得到相同的效果。有人可以通过这行代码来引导我。我意识到函数带来的漏洞。但我的兴趣点仅限于理解该特定代码行。
我想我现在我的答案 -
eval("\$str = \"$str\";")
和$str = "$str";
是不一样的东西。在第二种情况下,$ str的计算结果为This is a $string with my $name in it.
,在第一种情况下,相同的字符串,因为它仍在eval结构中,因此进一步评估并且结果为This is a cup with my coffee in it.
当你运行它时,你会得到什么输出? –
它滥用'eval'来解释原始单引号字符串中的'$ vars',通过使用双引号将其替换为它们的值。我建议不要使用这个,因为存在各种问题,比如源字符串中的'''' – Wrikken