在 php 中使用 eval() 中的函数

Using a function inside eval() in php

$answra[$j] = '$qry['.$answers[$j].']';
eval("echo stripSlashes($answra[$j]); ");

我尝试了不同的方法,但我无法使用 eval() 来显示输出。我关注了一个相关的 post 并得到了这个,但它并没有起作用。

$str = "echo (stripSlashes($answra[$j])) ;" ; 
eval("?> $str <?php ");

还有更简单的选择吗?

(我假设你有理由使用eval,这是不鼓励的,无论如何,让我给你我的解决方案)

好吧,我们有这个错误的例子:

$string = "asdfg";
eval("echo stripSlashes($string); ");

这将不起作用,因为在

中使用了字符串
eval("echo stripSlashes($string); ");

结果

echo stripSlashes(asdfg);

你可以看到 asdfg 不再是一个真正的字符串。

你需要做的是像这样转义变量:

eval("echo stripSlashes($string); ");

这样你的解释器就会知道不要考虑这个变量。

TL;DR:

这个反斜杠应该可以解决问题:

$answra[$j] = '$qry['.$answers[$j].']';
eval("echo stripSlashes($answra[$j]); ");

使用单引号而不是双引号,以防止变量在包含在字符串中时被扩展。它会在解析参数时扩展eval

eval('echo stripSlashes($answra[$j]); ');