我有一些代码在一个变量中返回到我的脚本中。我需要将其作为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');