開發工作中遇到這樣一種情形,需要執行使用者輸入的php**串,於是決定使用eval函式。coding大概示例如下:
function getstr($str)$php = 'getstr("wujuntian");';
$s = eval($php);
echo $s;
結果列印出來的結果一直是空的,使用var_dump()列印出來是null,原來eval()函式負責執行的**字串中如果沒有使用"return"返回值的話,是返回null的。
糾結了許久,原來需要在php**串中使用變數去接收執行結果,正確coding如下:
function getstr($str)$php = '$s=getstr("wujuntian");';
eval($php);
echo $s;
這樣列印出來終於如願以償了!
為避免將來再踩此坑,謹此記之。
eval函式的問題
1 因為eval必須執行編譯器,所以效率低。同時js除了顯式的eval外,還有隱式呼叫eval,如function建構函式,settimeout,setinterval函式傳遞字串引數的形式。如settimeout obj.show1 100 和settimeout obj.show1,100 是不...
eval 函式的用法
eval s 函式將去掉字串s最外側的引號,並按照python語句方式執行去掉引號後的字元內容。使用方式如下 變數 eval 字串 a eval 1.2 print a 輸出結果 1.2猶如 pybook 123a eval pybook print a 值得注意的是 a eval pybook p...
模組 eval函式
模組 1.模組是python程式架構的乙個核心概念 在匯入模組時,每個匯入應該獨佔一行 import 模組1 import 模組12 在匯入模組後,我們通過 模組名.的方式,使用模組提供的工具 2.使用as指定模組的別名 如果模組的名字太長,可以使用as指定模組的名稱,以方便在 中使用 語法 imp...