Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

csv файлы php

csv файлы php

Как говорится hello world, дорогие друзья! Рубрика php, тема csv файлы. Итак, поехали!

Для начала разберемся что представляют собой csv файлы. Так вот, csv - это текстовый файл позволяющий хранить информацию и отображающий ее в виде таблицы, то есть по строкам и столбцам. Это чем то напоминает форматы exel(xls, xlsx) за исключением того что мы можем хранить только текстовую информацию(текст) в csv. Всякие сложные штуки (кликабельные ссылки, картинки и т п) в csv хранится не могут. Это следует запомнить!

Рассмотрим как создаются файлы csv в php.

<?php
header("Content-type: text/csv");
header('charset=utf-8');
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

$array = array(
  array(1, 'Продукт 1', 2000, 'Ссылка на продукт 1', 1),
  array(2, 'Продукт 2', 3000, 'Ссылка на продукт 2', 0),
  array(3, 'Продукт 3', 4000, 'Ссылка на продукт 3', 1),
  array(4, 'Продукт 4', 5000, 'Ссылка на продукт 4', 1),
  array(5, 'Продукт 5', 10000, 'Ссылка на продукт 5', 0)
);

$out = fopen('php://output', 'w');

fputcsv($out, array('id','Название','Цена','Ссылка','Статус'));

foreach($array as $item)
{
  fputcsv($out, array($item[0],$item[1],$item[2],$item[3],$item[4]));
}

fclose($out);

При выполнении данного кода будет скачан файл file.csv с данными в таблице.

Разберем код подробнее:

Функции header() устанавливают заголовки для скачивания файла csv. В массиве $array содержаться данные которые будут построчно помещены в таблицу файла.

С помощью строчки:

$out = fopen('php://output', 'w');

Создается файл на запись. Обратите внимание что в качестве названия файла указано значение 'php://output', это означает что данные будут записаны в выходной буфер(то есть выведены на страницу). В конце не забываем закрыть файл fclose($out);

Функция fputcsv() формирует новую строку таблицы в формате csv. В нее передается два обязательных аргумента: Указатель на файл и индексный массив, элементами которого являются значения полей таблицы. Помимо обязательных аргументов функция fputcsv() может принимать дополнительные: разделитель полей delimiter (только один символ), ограничитель полей enclosure (только один символ), экранирующий символ escape_char (только один символ).

Внутренний механизм функции fputcsv выглядит так.

function fputcsv($hFile, $aRow, $sSeparator=',', $sEnclosure='"')
    {
       foreach ($aRow as $iIdx=>$sCell)
          $aRow[$iIdx] = str_replace($sEnclosure, $sEnclosure.$sEnclosure, $sCell);

       fwrite($hFile, join($aRow, $sSeparator)."\n");
    }

Если вы хоть немного разбираетесь в php то как видите здесь ничего сложного нет.

Итак, с созданием файла csv разобрались! Теперь переходим к чтению файла данного типа.

<?php
 $csvData = file_get_contents("file.csv");
 $lines = explode(PHP_EOL, $csvData);
 $array = array();
 foreach ($lines as $line) {
     $array[] = str_getcsv($line);
 }
 echo '<pre>';
 print_r($array);
 echo '</pre>';

Данный код выведет всю информацию из csv файла в виде массива на нашей странице. В начале с помощью функции file_get_contents() мы получаем содержимое файла. Затем это содержимое преобразуем в массив функцией explode(), в качестве разделителя которой является конец строки(константа PHP_EOL). Массив перебираем циклом и каждый его элемент(строку) обрабатываем специальной функцией str_getcsv() которая выполняет разбор CSV-строки в массив. Вот так это все работает!

На этом данную статью можно завершать. Сегодня было показано как создавать и читать файлы CSV. Процесс редактирования файлов рассматривать не будем, так как я думаю не сложно догадаться как это можно сделать.

На этом у меня все. Надеюсь данная небольшая статья оказалась для вас полезной и познавательной! Если так, то не забывайте подписываться на группу Вконтакте и переходите на канал Youtube.

Всем удачи! Пока.

Оцените статью:

Статьи

Комментарии

Внимание!!! Все комментарии проходят модерацию перед публикацией!

В данном разделе пока нет комментариев!

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm