1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. Skyler

    Skyler Гость

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

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

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

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

    Skyler Гость

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

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