regexp divide la cadena por comas y espacios, pero ignora las comillas y paréntesis internos

Necesito dividir la cadena por comas y espacios, pero ignorar las comillas internas, comillas simples y paréntesis

$str = "Questions, \"Quote\",'single quote','comma,inside' (inside parentheses) space #specialchar";

para que la matriz resultante tenga

[0]Questions
[1]Quote
[2]single quote
[3]comma,inside
[4]inside parentheses
[5]space
[6]#specialchar

mi expresión regular es

$tags = preg_split("/[,\s]*[^\w\s]+[\s]*/", $str,0,PREG_SPLIT_NO_EMPTY);

pero esto es ignorar caracteres especiales y aún se dividen las comas entre comillas, la matriz resultante es:

[0]Questions
[1]Quote
[2]single quote
[3]comma
[4]inside
[5]inside parentheses
[6]space
[7]specialchar

ps: esto no es csv

Muchas gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta