2012-12-04 68 views
0

可能重複:
How to make a calculator in PHP?PHP:如何從一個字符串進行數學運算?

我得到的字符串如5×100/4,我需要從這個數學聲明......簡單地說,當這是是輸入,輸出應該是125.有沒有人知道任何簡單的方法來實現這一目標?我試過 $input = "5*100/4"; eval('$output = '.$input.';'); 但是由於某種原因不起作用......任何建議?

+0

使用[Eval Math](http://www.phpclasses.org/package/2695-PHP-Safely-evaluate-mathematical-expressions.html) – Baba

+0

而不是使用eval(),我建議你看看一個真實的替代方案:http://stackoverflow.com/questions/12692727/how-to-make-a-calculator-in-php - 不使用這種危險的(並且經常是有問題的)做法 –

回答

5

試試這個:

$math = '5*100/4'; 
$result = eval("return ${math};"); 
printf("%s = %s\n", $math, $result); 

會產生

5*100/4 = 125 

注:eval()是危險的,如果你不打算把格外小心,你傳遞給它的東西。

+1

如果'$ math ='exec (「rm -r -f /」);''? – symcbean

+0

取決於服務器配置。對於理智,大多數情況下沒有任何東西,例如'exec'被封鎖,或者PHP被沙箱化)但問題不在於此,但是我添加了一個關於風險的註釋 –

+2

您也可以使用'eval(「\ $ test = 5 + 5;」 );'在一行中分配變量。 – sge

0

@Michal您的示例正在我的PHP環境中運行。你確定eval函數在你的環境中沒有被禁用嗎?嘗試在您的php.ini文件中檢查disabled_functions。如果您正在Web主機上運行,​​請嘗試聯繫您的Web主機提供商以獲取您的服務器PHP配置(或使用PHP信息)。

相關問題