regexp rozdzielaj ciąg przecinkami i spacjami, ale ignoruj ​​wewnętrzne cudzysłowy i nawiasy

Potrzebuję podzielonego ciągu za pomocą przecinków i spacji, ale ignoruj ​​wewnętrzne cudzysłowy, pojedyncze cudzysłowy i nawiasy

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

tak, że wynikowa tablica będzie miała

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

mój prawdziwy regexp jest

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

ale to ignoruje specjalne znaki i dzielone przecinki wewnątrz cudzysłowów, wynikowa tablica to:

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

ps: to nie jest csv

Wielkie dzięki

questionAnswers(2)

yourAnswerToTheQuestion