PHP评估的替代方案


Alternative to PHP eval?

我有一些代码在一个变量中返回到我的脚本中。我需要将其作为PHP代码来执行,但对于使用eval函数感到紧张。以下是包含文件中生成的代码:

/include.php:

$preLoadFields .=   '$2 = new KoolDatePicker("datepicker");                                    
                     $2->id="field_2";                              
                     $2->scriptFolder = "/KoolPHP";

/main.php

eval($preLoadFields);

即使当我尝试使用eval运行它时,我也会收到以下错误:

分析错误:语法错误,意外的"2"(T_LNUMBER),应为变量(T_variable)或"$"

有没有更好/更安全的方法来实现这一点?提前谢谢!

只是不要让include.php在变量中生成php代码。但直接执行。

$2 = new KoolDatePicker("datepicker");                                    
$2->id="field_2";                              
$2->scriptFolder = "/KoolPHP";

如果您担心HTML被生成并输出到屏幕上。然后不要使用ob_start ob_get_contents ob_end_clean:输出

ob_start();
$2 = new KoolDatePicker("datepicker");                                    
$2->id="field_2";                              
$2->scriptFolder = "/KoolPHP";
$generated_html = ob_get_contents();
ob_end_clean();

PHP试图输出到屏幕上的任何内容都将被缓冲。然后在稍后的代码中,使用$generated_html变量将其输出到您想要的任何位置。

(您仍然需要修复无效的变量名)

$2不是有效的PHP变量名:http://www.php.net/manual/en/language.variables.basics.php

它必须以字母字符开头。上面链接的页面中有一个正则表达式,详细说明了允许的格式。

从更大的角度来看,你不应该使用eval()。这是一个非常危险的功能。为什么不简单地将其作为PHP代码和include()代码呢?

include.php:

<?php
$var = new KoolDatePicker('datepicker');
$var->id="field_2"
$var->scriptFolder = '/KoolPHP';

main.php:

<?php
include('include.php');