2013-08-01 54 views
-1

我有以下代碼:使用額日格進行數學計算

<!DOCTYPE html> 
<html> 
<head> 
<title>Simple Calculator</title> 
<h2>Simple Calculator</h2> 
</head> 
<body> 
<?php 
if(isset($_GET["number1"]) and isset($_GET["number2"])) 
{ 
    if(!empty($_GET["number1"]) and !empty($_GET["number2"])) 
    { 

     global $n1; 
     global $n2; 

     $n1=$_GET["number1"]; 
     $n2=$_GET["number2"]; 

     [email protected]("^[0-9]+$",$n1); 
     [email protected]("^[0-9]+$",$n2); 
     if($check_number1==true and $check_number2==true) 
     { 
      function plus($n1,$n2) 
      {  
      return $total=$n1+$n2; 
      } 

      echo plus($n1,$n2); 
     } 
     else 
     { 
     echo "error !"; 
     } 
    } 
    else 
    { 
    echo "input two numbers"; 
    } 
} 
?> 


<form action="#" method="GET"> 
number 1 <input type="text" name="number1"><br> 
number 2 <input type="text" name="number2"><br> 
<input type="submit" value="compute"> 
</form> 
</body> 
</html> 

如何使PHP接受長的匹配字符串。例如,如果我在第一個字段中鍵入1+5,並在第二個字段中鍵入3+1,我希望它輸出10。或者如果我在第一個字段中輸入1,並在第二個字段中輸入3+2,則應該輸出6

+6

爲什麼你還在使用不推薦的ereg *函數? –

+0

哦,我的......在這麼一小段代碼中有太多的錯誤。你確定你不想在這裏拋出一些'mysql_query'嗎? – Mike

+0

可能重複的[如何評估公式作爲字符串在PHP中傳遞?](http://stackoverflow.com/questions/1015242/how-to-evaluate-formula-passed-as-string-in-php) – Mike

回答

0

您可以使用功能eval,但這是非常危險的!

這個類可以幫助你: http://www.phpclasses.org/browse/package/2695.html

  • 這個類可以用於安全評估數學表達式。
  • 該類可以採用文本字符串中的表達式,並通過替換變量值並計算數學函數和操作的結果來對其進行評估。
  • 它支持隱式乘法,多變量函數和嵌套函數。
  • 它可以用來評估來自不受信任來源的表達式。它提供了強大的錯誤檢查功能,並且只評估一組有限的功能。
  • 它可以用來從公式表達式生成圖形。
+0

你'只是複製和粘貼你的答案[現有問題](http://stackoverflow.com/questions/1015242)。這就是爲什麼我低估了它。 – Mike

+0

是的,和ereg可以工作或使用這個類... – Dawlys

+0

重點不在於它是否有效。如果已經存在一個問題完全相同的問題,最好的做法是將該問題標記爲另一個問題的重複,而不僅僅是複製和粘貼現有的答案,就好像它是您自己的答案一樣,並且還會創建重複的問題網站上的內容。 – Mike