Проблема С Fgetcsv() (двойные Кавычки)

  • Автор темы Skyler
  • Дата начала
S

Skyler

Гость
#1
Добрый день, уважаемые форумчане!
Вот уже вторые сутки бьюсь над следующей проблемой:
Необходимо прочесть файл CSV (см. вложение), для этого использую fgetcsv():
Код

PHP:
$fp=fopen("test.csv",r,true);
while($cols=fgetcsv($fp,65536,","))
{
echo "Count cols=".count($cols)."<br>";
}

Строки, в которых отсутствуют двойные кавычки (") читаются нормально (получаем корректный массив $cols), но если в строке есть хотябы одна кавычка, никакого разбиения не происходит и вся строка помещается в $cols[0]

Вот результат выполнения:

Count cols=4
Count cols=1
Count cols=1
Count cols=4
Count cols=4
Count cols=1

Может кто сталкивался с подобной проблемой?
Как корректно прочесть такой файл? (использование explode(), str_replace() и др. не подойдет, т.к. есть вероятность искажения данных)

Большое спасибо!
 

Вложения

  • 189 байт Просмотры: 6

acorn

PHP Developer
29.08.2004
585
3
#2
http://php.net/manual/en/function.fgetcsv.php

Четвертый параметр: enclosure: Set the field enclosure character (one character only).

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

Skyler

Гость
#3
Не, не работает. Как вариант вот-так:
PHP:
while($cols=fgetcsv($fp,65536,',','\\'))
Но, тогда к каждому элементу массива на начало и конец добавляется еще по две кавычки (""), удаляя которые, например через str_replace() можно зоадно удалить и что-то полезное...