从评估的PHP代码返回字符串/ int?

时间:2012-10-20 18:43:32

标签: php vbulletin

这让我烦恼。理论上它应该很容易,但我不理解。

基本上,我可以选择设置自定义算法来制作字符串或整数的“代码”。

这是用户生成的,然后我调用它。

我试图使用以下代码执行它:

$code = eval('return($custalg);');

但是返回输入的实际算法,而不是它将产生的值。

所以我的问题是,我如何设法在$ custalg中执行字符串作为php,然后将结果保存到变量中?

2 个答案:

答案 0 :(得分:4)

看起来你不知道PHP中单引号'和双引号"字符串之间的区别。你应该使用:

$code = eval("return($custalg);");

如果您希望展开$custalog

  

双引号字符串最重要的特征是事实   变量名称将被扩展。有关详细信息,请参阅字符串解析。

See more in docs

所以基本上正确的语法取决于$custalg是什么以及它的分配位置。在您的情况下,我猜您在主代码中分配了$custalg,因此您不希望替换。然后使用这样的代码:

$code = eval("return \$custalg;");

答案 1 :(得分:1)

您可以使用PHP output control functions

获得回音输出
ob_start();
eval("echo $custalg;");
$tmp = ob_get_contents();
ob_end_clean();
$evalOutput = $tmp;

或者您只需将返回值分配给全局变量。