2011-03-10 67 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

相关问题