PHP: разделить строку на запятую, но НЕ когда между скобками или кавычками?
В PHP у меня есть следующая строка:
$str = "AAA, BBB, (CCC,DDD), 'EEE', 'FFF,GGG', ('HHH','III'), (('JJJ','KKK'), LLL, (MMM,NNN)) , OOO";
Мне нужно разбить эту строку на следующие части:
AAA
BBB
(CCC,DDD)
'EEE'
'FFF,GGG'
('HHH','III')
(('JJJ','KKK'),LLL, (MMM,NNN))
OOO
Я пробовал несколько регулярных выражений, но не могне могу найти решение. Есть идеи?
UPDATEI»
мы решили, что использование регулярных выражений не является действительно лучшим решением, когда имеешь дело с искаженными данными, экранированными кавычками и т. д.
Благодаря предложениям, сделанным здесь, я нашел функцию, которая использует синтаксический анализ, который я переписал в соответствии со своими потребностями. Он может обрабатывать различные типы скобок, а разделитель и кавычка также являются параметрами.
function explode_brackets($str, $separator=",", $leftbracket="(", $rightbracket=")", $quote="'", $ignore_escaped_quotes=true ) {
$buffer = '';
$stack = array();
$depth = 0;
$betweenquotes = false;
$len = strlen($str);
for ($i=0; $i