"; if($array[2][$i]=="*")$str=str_replace($st,$array[1][$i]*$array[3][$i],$str); else $str=str_replace($st,$array[1][$i]/$array[3][$i],$str); } unset($array); } return $str; } function add_und_sub($str){ $patern='#(\d+\.?\d*)([\+|-])(\d+\.?\d*)#'; while(preg_match($patern,$str) ){ preg_match_all($patern,$str,$array); for($i=0;$i"; if($array[2][$i]=="+")$str=str_replace($st,$array[1][$i]+$array[3][$i],$str); else $str=str_replace($st,$array[1][$i]-$array[3][$i],$str); } unset($array); } return $str; } function calculator($str){ $str=preg_replace( "#\s#","",$str); $patern = '#\(([^(]+)\)#'; while(preg_match($patern,$str)&& $a<3){ preg_match_all($patern,$str,$array); for($i=0;$i"; $str=str_replace($st,add_und_sub(mult_und_dev($array[1][$i])),$str); } unset($array); } return add_und_sub(mult_und_dev($str)); } echo calculator("(2+5)*3+(8-5)"); ?>