PHP y RegEx: divide una cadena por comas que no están entre corchetes (y también corchetes anidados)

Hace dos días empecé a trabajar en un analizador de código y estoy atascado.

¿Cómo puedo dividir una cadena por comas que no están entre corchetes? Déjame mostrarte lo que quiero decir:

Tengo esta cadena para analizar:

one, two, three, (four, (five, six), (ten)), seven

Me gustaría obtener este resultado:

array(
 "one"; 
 "two"; 
 "three"; 
 "(four, (five, six), (ten))"; 
 "seven"
)

pero en su lugar me sale:

array(
  "one"; 
  "two"; 
  "three"; 
  "(four"; 
  "(five"; 
  "six)"; 
  "(ten))";
  "seven"
)

¿Cómo puedo hacer esto en PHP RegEx.

Gracias de antemano !

Respuestas a la pregunta(7)

Su respuesta a la pregunta