A function to parse line
Parsing line into multidimensional array…
function toarr($input, $prefix = '') {
if (!$prefix) $input = preg_replace('#[^\w\d\(\),]#’, ”, $input);
$word=”;
for ($i=0;$i<strlen($input);$i++)
{
$letter = $input[$i];
if ($letter == ‘,’) {
if ($word) $res[] = $prefix.$word;
$word = ”;
} elseif ($word && $letter == ‘(’) {
$opened = 1;
$subinput = ”;
for ($i = $i+1; $i<strlen($input); $i++) {
$letter = $input[$i];
if ($letter == ‘(’) $opened++;
elseif ($letter == ‘)’) $opened–;
if (!$opened) break;
$subinput .= $letter;
}
$res[] = $prefix.$word;
$res = array_merge($res, toarr($subinput, $prefix.$word.’/'));
$word = ”;
} else {
$word .= $letter;
if ($i == strlen($input)-1) $res[] = $prefix.$word;
}
}
return $res;
}
Usage:
$toarr = toarr('juice, car (audi ( rx7, rx8), mazda(cool, uncool)), soda(sprite(green, transparent), cola), girls');
Result:
Array(
[0] => juice
[1] => car
[2] => car/audi
[3] => car/audi/rx7
[4] => car/audi/rx8
[5] => car/mazda
[6] => car/mazda/cool
[7] => car/mazda/uncool
[8] => soda
[9] => soda/sprite
[10] => soda/sprite/green
[11] => soda/sprite/transparent
[12] => soda/cola
[13] => girls
)