我越來越公式中字符串的敵人例如評估和演示是在PHP氣餒7
$a = '1*2*(2+3)';
echo eval($a) // Output should be 10
現在我試圖評估該字符串,並使用eval對於這一點,但在PHP 7給我的EVAL這個錯誤使用()不鼓勵,所以我如何評價這個字符串。
我越來越公式中字符串的敵人例如評估和演示是在PHP氣餒7
$a = '1*2*(2+3)';
echo eval($a) // Output should be 10
現在我試圖評估該字符串,並使用eval對於這一點,但在PHP 7給我的EVAL這個錯誤使用()不鼓勵,所以我如何評價這個字符串。
的manual說;
注意
中的eval()語言結構是非常危險的,因爲它允許 執行任意PHP代碼。它的使用因而氣餒。如果您 仔細覈實,有沒有其他的選擇,而不是使用這個 結構,要特別注意不要通過任何用戶提供的數據 到它沒有正確驗證事前它。
至於替代而言,你可以試試這個解決方案在線程給出:calculate math expression from a string using eval
PHP never raises any such error:你應該懷疑第三方已經與安裝的干擾,可能安裝了某種「安全」重點擴展,改變PHP的行爲。
所有這樣的擴展不是由PHP項目的認可,並且是可怕的。
儘管什麼手冊說約EVAL,存在包括文件,evaling一些代碼之間no technical difference。
在現實世界中,唯一的區別是,eval'd代碼可能包含用戶輸入:用戶輸入的消毒和過濾是對於不使用eval PHP應用程序的問題。
注:你缺少從計算的表達式
回報,除非你在評估代碼中使用return
不能在eval()
使用echo
。
eval()
回報NULL
除非return
在已評估的代碼被稱爲
參見:http://php.net/manual/en/function.eval.php
所以,你可以這樣做:
$a = 'echo 1*2*(2+3);';
eval($a);
或
$a = 'return 1*2*(2+3);';
echo eval($a);