Я пытался найти ответ на этот вопрос, но не смог найти ничего слишком полезного в этой ситуации. Возможно, я не ищу правильные термины.
У меня проблемы с этим регулярным выражением. Рассмотрим эту строку:
$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
)
)
Естественно, усекает данные. Что я могу сделать, чтобы игнорировать скобки в кавычках? Если я смогу игнорировать их, то на следующем шаге, когда я разделю каждое из этих совпадений, я смогу игнорировать запятые.
Спасибо!