разбор CSV, взрыва, избегая "" - PullRequest
3 голосов
/ 19 декабря 2011

У меня есть CSV-файл (очень большой), который я анализирую с помощью php.

Теперь сделано так.

x,y,z,value,etc

но иногда есть это:

x,"blah,blah,blah",z,value,etc

делает это: explode(',',$string); В случае значения "" также взорвите все внутри.

array([0]=>x,[1]=>"blah,[2]=>blah,[3]=>blah"....)

Что я могу сделать, чтобы иметь это:

array([0]=>x,[1]=>"blah,blah,blah",[2]=>z....)

вместо

Спасибо

Ответы [ 2 ]

5 голосов
/ 19 декабря 2011

Не используйте разнесение, используйте fgetcsv .

Для анализа только строки используйте str_getcsv , если у вас PHP> = 5.3.

0 голосов
/ 19 декабря 2011

Если бы я был вами и должен был использовать метод, который вы говорите.Я бы проанализировал строку для текста в кавычках с помощью регулярного выражения.

Замените, на * (например)

x, "бла * бла * бла", z, значение и т. Д.

, затем взорвите строку еще раз с помощью,

Теперь вы должны получить оценочный массив, но теперь у вас есть bla * bla * bla.

Затем просто выполните str_replace для массива

И таким образом выдолжно работать ..

Это применимо только в том случае, если у вас есть строгие правила синтаксического анализа .. (в данном случае посредством разнесения);

...