Есть ли способ заменить некоторые кавычки на 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.