2012-02-29 84 views
-8

我的问题是,PHP字符串计算

我们怎样才能从PHP中的字符串中分离出数字和运算符?

例如 - 什么是2 + 2?

那么,我们如何从字符串中取出2 + 2,并对其进行计算并显示出合适的结果呢?

谢谢。

+0

的可能的复制:[?如何评估式,如同在PHP字符串传递(http://stackoverflow.com/q/1015242/367456 ) – hakre 2013-09-25 06:01:03

回答

1

看看PHPClasses上的evalMath类,它可以处理相当复杂的公式。

或者:

$string = '2 + 2'; 
list($operand1,$operator,$operand2) = sscanf($string,'%d %[+\-*/] %d'); 
switch($operator) { 
    case '+' : 
     $result = $operand1 + $operand2; 
     break; 
    case '-' : 
     $result = $operand1 - $operand2; 
     break; 
    case '*' : 
     $result = $operand1 * $operand2; 
     break; 
    case '/' : 
     $result = $operand1/$operand2; 
     break; 
} 
echo $result; 
2
function calculate_string($mathString) { 
    $mathString = trim($mathString);  // trim white spaces 
    $mathString = ereg_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString); 

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

$string = " (1 + 1) * (2 + 2)"; 
echo calculate_string($string); 
+0

ereg_replace()已弃用 – 2012-02-29 13:28:14

0

如果你要计算的东西,不考虑分组运算符(如())或按照操作/运算符的优先顺序,这是一个非常坦率的。

如果您确实想要考虑这些因素,那么您必须愿意为上下文无关语言编写解析器。

或者,你可以搜索库,在那里,有already been written