的這段代碼是從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