簡體   English   中英

替代PHP eval?

[英]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)或“ $”

有沒有更好/更安全的方法來做到這一點? 先感謝您!

$2不是有效的PHP變量名稱: http : //www.php.net/manual/zh/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');

只是不要讓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變量將其輸出到所需的任何位置。

(您仍然需要修正無效的變量名稱)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM