我有一些代码在变量中返回到我的脚本。我需要将其作为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)或'$'
有没有更好/更安全的方法来实现这一目标?提前谢谢!
答案 0 :(得分:3)
$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');
答案 1 :(得分:3)
只是不要让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
变量将其输出到任何您想要的位置。
(您仍然需要修复无效的变量名称)