2014-11-24 108 views
0

如何到convert 1/4 to 0.25PHP將轉換分數轉換爲浮點數PHP

在表單中我插入數字爲1/4。在action page我得到post變量爲1/4。 如何將其轉換爲0.25。我認爲在行動頁面這是作爲字符串獲得。這就是爲什麼它顯示爲1/4。但我需要0.25.我該怎麼做?

主頁

<input type="text" name="a" id="a"> 

操作頁面

$a = $_POST['a']; 
echo $a; //gives 1/4 but need 0.25 

請幫助..

+0

檢查我的回答,我提供了一些很好的辦法來解決你的這個問題;)取我主張一個特殊的外觀爲您的代碼,並在使用'EVAL的最後一個版本 – 2014-11-24 13:26:20

回答

0

可以使用這樣的函數:

<?php 

    function calculate_string($mathString) { 
     $mathString = trim($mathString); 
     $mathString = str_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString); 

     $compute = create_function("", "return (" . $mathString . ");"); 
     return 0 + $compute(); 
    } 

    echo calculate_string("1/4"); 


?> 

輸出:

0.25 
+1

仔細看()'通常不好。在用戶提供的數據上使用'eval()'是絕對不好的。 – 2014-11-24 13:00:29

+0

@MarcinOrlowski更新了我的答案!做了一個功能! – Rizier123 2014-11-24 13:04:36

1

一種可能的方式是這樣的:

在操作頁面

,第一爆炸在輸入的值一樣:

$explode = explode('/', $_POST['a']); 

那麼你只要將它們劃分:d

$result = $explode[0]/$explode[1]; 
echo $result; //echoes 0.25 

L.E:在我看來,這樣做是使用3個輸入的最佳方式。一個帶有第一個數字,一個帶有操作,另一個帶有第二個數字。在這種情況下,你可以做一個真正的計算器和在行動頁面這樣執行正常操作:

在顯示頁面:

<input type="text" name="first_no" id="first_no"> 
<input type="text" name="operation" id="operation"> 
<input type="text" name="second_no" id="second_no"> 

在行動頁:

switch($_POST['operation']) { 
    case '+'; 
    $result = $_POST['first_no'] + $_POST['second_no']; 
    break; 
    case '-'; 
    $result = $_POST['first_no'] - $_POST['second_no']; 
    break; 
    case '*'; 
    $result = $_POST['first_no'] * $_POST['second_no']; 
    break; 
    case '/'; 
    $result = $_POST['first_no']/$_POST['second_no']; 
    break; 
    //and so on... if you need more 
} 

echo $result; 

L.E2:只是爲了好玩,我爲您的代碼提供了一個版本,只有一個輸入

//get index 
preg_match("/\D/is", $_POST['a'], $mList, PREG_OFFSET_CAPTURE); 
$index = $mList[0][1]; 

//get operation 
$operation = substr($string, $index, 1); 

//get numbers 
$explode = explode($operation, $string); 

//produce result 
switch($operation) { 
    case '+'; 
    $result = $explode[0] + $explode[1]; 
    break; 
    case '-'; 
    $result = $explode[0] - $explode[1]; 
    break; 
    case '*'; 
    $result = $explode[0] * $explode[1]; 
    break; 
    case '/'; 
    $result = $explode[0]/$explode[1]; 
    break; 
    //and so on... if you need more 
} 

echo $result; 

希望這有助於:d

-1

那麼你可以使用eval這裏,但要小心!直接解析$ _POST的東西,使你的腳本非常危險,如果你沒有正確地逃避輸入!

如果你相信你會得到這樣的1/4或1/2,這將做到這一點:

echo eval("return ".$_POST['a'].";"); 

但正如我所說。請仔細考慮這個 如果有人想要壞東西,他可以在你的輸入中輸入exec('init 0'),如果你的網絡服務器獲得了這個許可,你的服務器將會關閉(這只是一個不安全的eval的無數漏洞),所以我請你請耐心等待。

第二種方法是拆分你的數字並將它們分開。但這肯定會有很多格式問題。

問候