Анализ данных, разделенных запятой

Задача
Есть данные, разделенные запятыми (формат CSV), например, файл, экспортированный из Excel или из базы данных, и необходимо извлечь записи и поля в формате, с которым можно работать в PHP.

Решение
Если CSV-данные представляют собой файл (или они доступны через URL), то откройте файл с помощью функции fopen() и прочитайте данные с помощью функции fgetcsv(). Данные будут представлены в виде HTML-таблицы:

$fp = fopen('sample2.csv','r') or die("can't open file");
print "\n";
while($csv_line = fgetcsv($fp,1024)) {
print '';
for ($i = 0, $j = count($csv_line); $i < $j; $i++) {
print '';
}
print "\n";
}
print '
'.$csv_line[$i].'
\n';
fclose($fp) or die("can't close file");

Обсуждение
Второй аргумент в fgetcsv() должен превышать максимальную длину строки в вашем CSV-файле. (Не забудьте посчитать пробельные символы, ограничивающие строку.) Если длина читаемой строки превышает 1 Kбайт, то число 1024, использованное в данном рецепте, надо заменить на действительную длину строки. Функции fgetcsv() можно передать необязательный третий параметр, ограничитель, используемый вместо запятой.


Однако применение другого ограничителя до некоторой степени лишает смысла CSV как наиболее простого способа обмена табличными данными.

Не старайтесь избегать функции fgetcsv(), а просто читайте строку и вызывайте функцию explode() в случае запятых. CSV является более сложным, когда имеешь дело с внедренными запятыми и двойными кавычками. Использование функции fgetcsv() защитит ваш код от трудноуловимых ошибок.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ данных, состоящих из полей фиксированной ширины
Включение функций и выражений в строки
Доступ к подстрокам
Замещение подстрок
Посимвольная обработка строк

Вернуться в раздел: PHP / 1. Строки