2016-11-14 62 views
0

我越來越公式中字符串的敵人例如評估和演示是在PHP氣餒7

$a = '1*2*(2+3)'; 
echo eval($a) // Output should be 10 

現在我試圖評估該字符串,並使用eval對於這一點,但在PHP 7給我的EVAL這個錯誤使用()不鼓勵,所以我如何評價這個字符串。

回答

0

manual說;

注意

中的eval()語言結構是非常危險的,因爲它允許 執行任意PHP代碼。它的使用因而氣餒。如果您 仔細覈實,有沒有其他的選擇,而不是使用這個 結構,要特別注意不要通過任何用戶提供的數據 到它沒有正確驗證事前它。

至於替代而言,你可以試試這個解決方案在線程給出:calculate math expression from a string using eval

5

PHP never raises any such error:你應該懷疑第三方已經與安裝的干擾,可能安裝了某種「安全」重點擴展,改變PHP的行爲。

所有這樣的擴展不是由PHP項目的認可,並且是可怕的。

儘管什麼手冊說約EVAL,存在包括文件,evaling一些代碼之間no technical difference

在現實世界中,唯一的區別是,eval'd代碼可能包含用戶輸入:用戶輸入的消毒和過濾是對於不使用eval PHP應用程序的問題。

注:你缺少從計算的表達式

0

回報,除非你在評估代碼中使用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);