Я пытался найти ответ на этот вопрос, но не нашел ничего полезного в этой ситуации. Возможно, я не ищу правильные термины.
У меня проблемы с этим регулярным выражением. Рассмотрим эту строку:
$str = "(1, 2, 'test (foo) bar'), (3, 4, '(hello,world)')";
Я хочу получить многомерный массив, например:
$arr = array(
array(1, 2, 'test (foo) bar'),
array(3, 4, '(hello,world)')
);
Я полагаю, что могу запустить регулярное выражение, чтобы разделить его на отдельные строки, такие как "(1, 2, 'test (foo) bar')" и "(3, 4, '(hello,world)')", а затем запустить регулярное выражение для каждого из них для разделения запятой, но, как вы можете видеть, моя проблема заключается в том, что данные имеют круглые скобки и запятые в разных строках, и я бы хотел их игнорировать.
Пока у меня есть это, которое делает первую часть так, как я хотел, за исключением того, что если в данных есть скобки, то оно ломается.
preg_match_all('/\((.*?)\),?/', $str, $matches);
Это дает мне это:
Array
(
[0] => Array
(
[0] => (1, 2, 'test (foo)
[1] => (3, 4, '(hello,world)
)
[1] => Array
(
[0] => 1, 2, 'test (foo
[1] => 3, 4, '(hello,world
)
)
Это усекает данные, естественно. Что я могу сделать, чтобы игнорировать скобки в кавычках? Если я смогу их игнорировать, то на следующем шаге, когда я разделю каждое из этих совпадений, я смогу игнорировать запятые.
Спасибо!