Оглавление

25.5. Чтение CSV-файлов

При работе с таблицами (например, в Excel) есть возможность сохранения таблицы в формате CSV. В этом формате каждая строка будет содержать значения ряда ячеек таблицы, разделенных точкой с запятой. Например, таблица

1234
5678
9101112


при сохранении в формате CSV будет выглядеть следующим образом:
1;2;3;4
5;6;7;8
9;10;11;12

 

Для  чтения CSV-файлов  используется  функция  fgetcsv().  Функция  имеет следующий формат:
fgetcsv(<Дескриптор>, [<Длина в байтах>], [<Разделитель>], 
      [<Ограничитель>]);
Если  <Разделитель>  не  указан,  то  по  умолчанию  используется  , (запятая).  А  если  не  указан <Ограничитель>,  то по  умолчанию используется  символ " (кавычка).

 
Функция  fgetcsv()  считывает  из  файла  одну  строку  при  каждом  вызове. Считывание будет выполняться до тех пор, пока не встретится символ новой строки (\n), символ конца файла или из файла не будет прочитано указанное количество байт. Строка будет разбита по разделителю <Разделитель> и помещена в возвращаемый массив.

 
Если  какая-либо  ячейка  содержит  символ  разделителя,  то  все  содержимое ячейки обычно заключается в кавычки. Если используется другой символ, то он должен быть указан в параметре <Ограничитель>.

 
При сохранении в формате CSV таблица

1234
5678
9101112;15

 

будет выглядеть так:
1;2;3;4
5;6;7;8
9;10;11;"12;15"

 
Чтобы  преобразовать CSV-файл  в HTML-таблицу,  можно  воспользоваться кодом, приведенным в листинге 47.

 
Листинг 47. Преобразование CSV-файла в HTML-таблицу

<?php
@$file = fopen('filecsv.csv', 'r') or die('Ошибка');
flock($file, 1);
echo '<table cellspacing="0" cellpadding="5" border="1" width="200">';
echo "\n";
while(!feof($file)) {
   $Mass = fgetcsv($file, 1024, ';');
   $j = count($Mass);
   if ($j != 1) {
      echo '<tr align="center">' . "\n";
      for ($k=0; $k<$j; $k++) {
         echo '<td width="25%">';
         echo $Mass[$k];
         echo "</td>\n";
      }
      echo "</tr>\n";
   }
}
echo '</table>';
flock($file, 3); // 3 == LOCK_UN
fclose($file);
?>

 

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити