2011-03-10 160 views

回答

4

我不認爲這樣的功能存在 - 至少不與PHP捆綁在一起。

編寫一個執行此操作的函數,如果你的字符串總是具有相同的格式,不應該太難;例如,我會說,這樣的事情應該做的伎倆:

$str = '18 5/16'; 
var_dump(calc($str)); 

function calc($str) { 
    $int = 0; 
    $float = 0; 
    $parts = explode(' ', $str); 
    if (count($parts) >= 1) { 
     $int = $parts[0]; 
    } 
    if (count($parts) >= 2) { 
     $float_str = $parts[1]; 
     list($top, $bottom) = explode('/', $float_str); 
     $float = $top/$bottom; 
    } 
    return $int + $float; 
} 

這將得到以下的輸出:

float 18.3125 


,你可能會得到一些更短的幾個正則表達式;這樣的事情應該做的伎倆,我想:

function calc($str) { 
    if (preg_match('#(\d+)\s+(\d+)/(\d+)#', $str, $m)) { 
     return $m[1] + $m[2]/$m[3]; 
    } 
    return 0; 
} 



否則,不會在PHP捆綁在一起,而是已經存在的,也許這個類可以幫助:Eval Math

聲明:我沒有測試它 - 所以不太確定它會在你的具體情況下工作。

+1

我喜歡較短的版本,但更好地使用'^'和'$'括起正則表達式。 – aaz 2011-03-10 22:33:04