Регулярное выражение для взрыва данных CSV с запятой

У меня есть следующая строка в моем CSV-файле

,1,193,23 Video,,"Slotsgade 2, 2.th",,,,,,Copenhagen N,,DK-2200,Denmark,,,,,,,,
,,,Europe,+45 31450980,,[email protected],www.23video.com,,,,,,,,Cabsat Online
 Video Industry Sourcebook 12,Mr.,Kristoffer,,Schou,,M,,,,,,,,,,,,,,,,,,,,,,,,,
,,,[email protected],,,,,,,

Как вы видете

"Slotsgade 2, 2.th"

имеет запятую между ними, теперь я использую preg_split, чтобы взорвать строку в столбцах.

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

Я уже пробовал это:

/,|".*(?=")/      

Какое регулярное выражение я могу использовать в preg_split для правильного получения данных?


person Sandeep Rajoria    schedule 27.08.2012    source источник
comment
Вопрос в следующем: достаточно ли ясно я сформулировал вопрос?   -  person mmdemirbas    schedule 27.08.2012
comment
:) нет, чтобы получить регулярное выражение, которое я могу использовать в preg_split для правильного получения данных   -  person Sandeep Rajoria    schedule 27.08.2012


Ответы (2)


Используйте функцию fgetcsv, она все сделает за вас.

И у вас также есть str_getcsv, который будет анализировать строку CSV в массив.

person xdazz    schedule 27.08.2012

Из библиотеки RegexBuddy:

CSV: любое поле

Соответствует любому отдельному полю в файле CSV. Используйте это регулярное выражение для перебора всех полей.

"[^"\r\n]*"|[^,\r\n]*

CSV: любое поле с дополнительными пробелами.

Соответствует любому отдельному полю в файле CSV. Используйте это регулярное выражение для перебора всех полей. Включает дополнительные пробелы до и после полей в двойных кавычках в соответствии с регулярным выражением.

[ \t]*+"[^"\r\n]*+"[ \t]*+|[^,\r\n]*+

CSV: полная строка, все поля

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

^("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)$
person mmdemirbas    schedule 27.08.2012
comment
Большое спасибо за ответ..... это определенно будет полезно, на данный момент str_getcsv заработало.... - person Sandeep Rajoria; 27.08.2012