-1

这是我的代码;

$script = $row['script']; 

   // $row is from database and the $row['script'] is exeactly the same with $script commented below.
  // $script ="global \$timedate;\$target =\$timedate->now();return \$target;";

return eval($script);

当我取消注释 $script 时,它将正确运行。但是,如果我评论 $script 并从 $row['script'] 加载值,则 eval 会出现以下错误:

 [12-May-2012 22:09:25 UTC] PHP Parse error:  syntax error, unexpected $end in C:\Users\iopen\Documents\IOPEN\Project\Clients\sugarcrm\hfcrmlocal\custom\modules\iopenwf\model\IOpenAction.php(56) : eval()'d code on line 3

任何的想法?

4

2 回答 2

1

不要使用eval它是一个非常糟糕的主意。

出于实验目的,您可以使用它stripslashes来消除大多数斜线问题

class Test {
    function now() {
        return time ();
    }
}

$timedate = new Test ();
$script = "global \$timedate;\$target =\$timedate->now();return \$target;";
$script = stripslashes ( $script );
var_dump ( eval ( $script ) );
于 2012-05-12T22:33:58.200 回答
0

尝试为您的脚本创建一个函数,这将使以后更容易编辑,并且您将有一个更好的概览。如您所见,我删除了 eval(); 功能。现在它完成了这项工作。我不确定你为什么需要 eval() 但是使用下面的脚本,没有 eval(); 需要。

<?php
   function getScript() {
      $script = 1;  
      // $row is from database and the $row['script'] is exeactly the same with $script commented below.
      // $script ="global \$timedate;\$target =\$timedate->now();return \$target;";
      return $script;
      }
   $scriptNo = getScript();
   echo $scriptNo;
?>
于 2012-05-12T22:42:48.390 回答