i would like to parse string: apple(3),banana(10),orange(aaa) and get out the fruit name and what ever is between () [code]Array ( [0] => Array ( [0] => apple [1] => 3 ) [1] => Array ( [0] => banana [1] => 4 ) [2] => Array ( [0] => orange [1] => aaa ) )[/code] i would also like to still get the name if () is missing ..like this [move][move][/move][/move] [code] [2] => Array ( [0] => orange [1] => )[/code] ...this is what i achomplished till now with [code]$aa = "apple(3),banana(10),orange(aaa)"; preg_match_all("/([a-zA-Z0-9 ]*)(\(?([a-zA-Z0-9]*)\)?)/", $aa, $matches, PREG_SET_ORDER); print_r($matches);[/code] [code]Array ( [0] => Array ( [0] => apple(3) [1] => apple [2] => (3) [3] => 3 ) [1] => Array ( [0] => [1] => [2] => [3] => ) [2] => Array ( [0] => banana(10) [1] => banana [2] => (10) [3] => 10 ) [3] => Array ( [0] => [1] => [2] => [3] => ) [4] => Array ( [0] => orange(aaa) [1] => orange [2] => (aaa) [3] => aaa ) [5] => Array ( [0] => [1] => [2] => [3] => ) )[/code] if i get four dimensional resoult its ok..but i dont want empty result