如何删除字符串中不需要的括号?

时间:2013-02-21 17:04:52

标签: php

我有一个包含数学表达式的字符串,如(21)*(4+2)。出于计算的目的,我需要“简化”它,使它在表达式之间不包含任何数字(即(21)*(4+2) => 21*(4+2))。我不知道该怎么做(我想到了正则表达式取代的东西,但我不太擅长处理它。)

2 个答案:

答案 0 :(得分:0)

你可以做一个像这样的算法:

$str = "(21)*(4+2)";
//split above to array of characters
$arr = str_split($str);

foreach($arr as $i => $char) {
   if character is opening parenthesis {
     get all characters in a string until closing parnethesis is found
   endif }

   if the string you received from above contains only digits 
   (means it has no expression i.e. +,-,/,%,*) then remove the first and last 
   characters of the above string which are the parenthesis and append the 
   string to the final string.
}

答案 1 :(得分:0)

好吧,在我看来,我意外地解决了这个问题(到目前为止,preg_replace对我有效):

echo preg_replace( "/\((\d+)\)/", "$1", $eq );

我认为它没有考虑小数。 here上的示例公式及其生成的输出为codepad

对于小数,我在正则表达式中使用了[\d\.]+。它似乎正在发挥作用。

echo preg_replace( "/\(([\d\.]+)\)/", "$1", $eq );

另一个link