Есть ли способ заменить некоторые кавычки на preg_split и пропустить некоторые?

Я пытаюсь использовать 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 ответ

Решение

Регулярное выражение на самом деле является неправильным инструментом для вашей проблемы. Анализатор 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

Другие вопросы по тегам