2015-04-23 6 views
2

У меня очень любопытная проблема с fgtcsv(). Посмотрите на этом кодеfgetcsv() неправильно добавляет двойные кавычки к первому элементу первой строки

$csv_check = fopen(CSV_DIR.$this->db_table.".csv","r"); 
    $data = fgetcsv($csv_check, 1000, $this->fields_terminated_by); 
    fclose($csv_check); 

A print_r ($ данных) выдает следующее:

array (
0 => '"program_id"', 
1 => 'program_name', 
2 => 'program_logo', 
) 

Любопытно, что $ данных [0] является двойным цитируемом здесь ... оригинальными строками в этом файле CSV выглядит следующим образом:

"program_id";"program_name";"program_logo" 

Я не понимаю вообще ... Подсчет символов в $ данных [0] с StrLen ($ данных [0]) возвращает 15, даже если неправильно цитировал, он должен быть 12 символов ... Я очень ошеломлен ...!

Любые идеи?!?

+2

Имеет ли файл csv заголовок спецификации? Если это так, то это, скорее всего, рассматривается как часть данных, а это значит, что кавычки также являются частью данных, потому что первая цитата возникает после заголовка спецификации, поэтому не считается цитатой в приложении –

+0

Вот и все, @MarkBaker. Спасибо! – Dong3000

+0

Только что столкнулся с этой проблемой. Что такое заголовок спецификации? Как вы это решили? –

ответ

0

Я знаю, что это старая тема, но поскольку кто-то может прийти, как я, и попытаться найти решение, вот как это исправить.

Открыть блокнот (в моем случае я использовал блокнот ++) и создать новый файл.
Скопируйте/вставьте все данные в новый файл.
Сохраните его как «Все типа» и добавьте «.csv» самостоятельно.
Файл должен быть сохранен без спецификации, и вы можете обрабатывать чтение файла CSV с помощью PHP.

 Смежные вопросы

  • Нет связанных вопросов^_^