0

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

有没有更好/更安全的方法来做到这一点?先感谢您!

4

2 回答 2

3

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

它必须以字母字符开头。允许格式的正则表达式详细信息在上面的链接页面中。

在更大的方案中,您不应该使用eval(). 这是一个非常危险的功能。为什么不简单地将它作为 PHP 代码和include()它呢?

包括.php:

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

主.php:

<?php
include('include.php');
于 2013-07-23T19:22:15.593 回答
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变量将其输出到您想要的任何位置。

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

于 2013-07-23T19:40:25.473 回答