[英]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.