3
我認爲PHP中有一種簡單的方法將18 5/16
這樣的字符串轉換爲浮點數18.3125
。我找不到一個簡單的功能來做到這一點。有一個,還是我需要寫我自己的?將混合分數字符串轉換爲浮點數PHP
我認爲PHP中有一種簡單的方法將18 5/16
這樣的字符串轉換爲浮點數18.3125
。我找不到一個簡單的功能來做到這一點。有一個,還是我需要寫我自己的?將混合分數字符串轉換爲浮點數PHP
我不認爲這樣的功能存在 - 至少不與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。
聲明:我沒有測試它 - 所以不太確定它會在你的具體情況下工作。
我喜歡較短的版本,但更好地使用'^'和'$'括起正則表達式。 – aaz 2011-03-10 22:33:04