Есть ли способ заменить некоторые кавычки на preg_split и пропустить некоторые? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь использовать preg_split(), но результат не тот, который я ожидаю получить от функции.

Я новичок в php и всей preg_split() сцене, и кажется, чтомне сложно понять, по крайней мере, на данный момент.

$row = "EL10,40,2019-02-06,55555,2019-01-06,ar@email.com,"Text , random text , 52555885/ 48484848484",Yes,One Two,Broke,2019-01-01,000.00,0.00,0.0,0.0,0.0,0.00,0.00,0.0,VRA "Morning";

$row_expl = preg_split('/(?:[^"]*"|)\K\s*(,\s*|$)/',$row);

Я ожидаю удалить запятые, оставляя запятые в кавычках.

Кажется, все почти работает, единственная проблема возникает в самом конце.Добавляет дополнительные кавычки: VRA "Morning".Результат выглядит так: "VRA ""Morning"""

1 Ответ

0 голосов
/ 19 февраля 2019

Регулярное выражение на самом деле является неправильным инструментом для вашей проблемы.CSV-синтаксический анализатор, который определяет разделитель и символ вложения, является тем инструментом, который вам нужен.

str_getcsv('EL10,40,2019-02-06,55555,2019-01-06,ar@email.com,"Text , random text , 52555885/ 48484848484",Yes,One Two,Broke,2019-01-01,000.00,0.00,0.0,0.0,0.0,0.00,0.00,0.0,VRA "Morning')

Разделителем по умолчанию для str_getcsv является ,, а символ вложения - ", поэтому все должно быть установленос параметрами по умолчанию.Вы можете узнать больше о функции здесь http://php.net/manual/en/function.str-getcsv.php.

https://3v4l.org/GFWkr

...