0

嗨,我正在学习 LISP,好吧,我整天编程 php 为生,所以我在 php.net 上乱搞,发现了 eval 函数……所以我开始玩了!

我很想知道更多关于如何使用 eval 来做疯狂的事情,我知道你可以用这个和所有东西来制作函数......但我想问为什么下一个代码不起作用:

$var = "echo \"FOZZ\";";
for($i = 0; $i < 100; $i++)
    $var  = "eval(\"".$var."\");";
print $var;   
eval($var);

eval 还有什么其他有趣的东西!

4

3 回答 3

1

你的陈述是 'eval("eval("echo"FOZZ";");")'。您的双引号相互干扰并导致错误。

您可能想尝试将第一行更改为 $var = "echo \'FOZZ\';";

注意:请小心使用 eval。

于 2009-01-09T18:03:59.447 回答
1

对于 web 编程的常见情况,我开发了一个名为 xilla_tags 的库,它可以轻松编写 lisp 风格的 PHP 代码,这比传统方法更具可读性。

对于 xilla_tags,请参见xilla 标签示例

关于 PHP 中的 lisp 样式,Jacob Hannsen 在他的 bitchware 网站上有一篇很棒的文章,用于更一般的情况。

于 2009-10-01T05:22:38.520 回答
0

它不起作用,因为您需要在带引号的字符串中转义引号。由于$var包含引号,因此您需要在每次迭代将引号填充到另一层 eval 中时对其进行转义。

但无论如何,我不容忍这样eval()过度使用。使用它一次应该很少,并且只在最必要的情况下使用。 eval()在任何编程语言中都是等待发生的意外。

于 2009-01-09T18:04:33.643 回答