Regex para tags de cotización php

Necesito analizar texto de una sola cita (nota múltiple nested = único) con php, similar a la etiqueta de cita de foros. Ejemplo:

some nonquoted text1 [quote="person1"]some quoted text11[/quote] some nonquoted text2 [quote="person2"]some quoted text22[/quote] etc... with no newlines necessarily... 

El resultado debe ser como un array

  Array ( ['nonquoted'] => Array ( [0] => some unquoted text1 [1] => some unquoted text2 ) ['quoted'] => Array { [0] => Array ( [0] => person1 [1] => some quoted text11 ) [1] => Array ( [0] => person2 [1] => some quoted text22 ) } } 

 $input= <<Array(), 'quoted'=>Array()); //find [quote] blocks, replace them with nothing, and store the text in $result['quoted'] $unquoted = preg_replace_callback('@\[quote="([^\"]+)"\](.*)\[/quote\]@',function($m) use(&$result){ $result['quoted'][]=Array($m[1],$m[2]); },$input); //what's left is only unquoted lines, so split them into an array $result['unquoted']=preg_split('@[\r\n]+@',$unquoted); //your result print_r($result);