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

Тема в разделе "PHP программирование", создана пользователем Skyler, 6 фев 2012.

  1. Skyler

    Skyler Гость

    Добрый день, уважаемые форумчане!
    Вот уже вторые сутки бьюсь над следующей проблемой:
    Необходимо прочесть файл 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() и др. не подойдет, т.к. есть вероятность искажения данных)

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

    Вложения:

    • test.rar
      Размер файла:
      189 байт
      Просмотров:
      6
  2. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    http://php.net/manual/en/function.fgetcsv.php

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

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

    Skyler Гость

    Не, не работает. Как вариант вот-так:
    Код (PHP):
    while($cols=fgetcsv($fp,65536,',','\\'))
    Но, тогда к каждому элементу массива на начало и конец добавляется еще по две кавычки (""), удаляя которые, например через str_replace() можно зоадно удалить и что-то полезное...
     
Загрузка...
Похожие Темы - Проблема Fgetcsv() (двойные
  1. c0de3r
    Ответов:
    5
    Просмотров:
    119
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    133
  3. SoulPaladin
    Ответов:
    3
    Просмотров:
    122
  4. Artael
    Ответов:
    1
    Просмотров:
    109
  5. ENSLER
    Ответов:
    0
    Просмотров:
    102

Поделиться этой страницей