Изучаем PHP 7. №22. Работа с .csv файлами.


CSV (Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Спецификация:
— Каждая строка файла — это одна строка таблицы.
— Разделителем (delimiter) значений колонок является символ запятой (,). Однако на практике часто используются другие разделители, то есть формат путают с DSVruen и TSV.
— Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками («). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.

Еще одно обозначение:
CSV — самый обычный текстовый файл с расширением .csv, в котором могут храниться табличные данные в виде сплошного текста, где ячейки с данными разделены точкой с запятой. Если точка с запятой является частью данных, то ее берут в кавычки «;», а если двойные кавычки являются частью данных, то они так же берутся в кавычки. Например, было: «слово», стало «»слово»».

Будем использовать такие новые функции:
fgetcsv() — Читает строку из файла и производит разбор данных CSV.
count() — Считает количество элементов в массиве или количество свойств в объекте.

Вот как выглядит наш CSV файл:

Наименование;цена;производитель;наличие
Телефон 1;1000;Samsung;есть
Телефон 2;1500;Samsung;есть
Телефон 3;2500;Nokia;нет
Телефон 4;2500;Nokia;есть

А вот как мы к нему подключаемся и извлекаем информацию:

<?php 
//открываем файл. Если его нет, завершаем работу скрипта и выводим ошибку
$file = fopen("data.csv", 'rt') or die("Не удалось подключть файл");

//считываем данные в цикле
for($i=0; $data = fgetcsv($file, 1000,";"); $i++){
  
  //определяем количество полей в строке
  $pole = count($data);

  // выводим эту информацию
  echo "<p> Строка $i содержит $pole поля:<br>";

  // выводим каждое поле
  for ($c=0; $c < $pole; $c++) echo "[$c]".$data[$c]."<br>";
}

// закрываем файл
fclose($file);

?>

 

Чтобы записать массив данных в csv файл, используем такой код:

// Создаем массив данных
$list = ['first,second,third,fourth','one,two,three','lol,hah'];

// Создаем файл в который будем этот массив записывать
$file = fopen('file.csv','w');


// Перебираем массив, записывая построчно
foreach($list as $line){
  fputcsv($file, explode(',', $line), ';');
}

// Закрываем соединение с файлом
fclose($file);

// если все прошло успешно, то выводим ОК
echo 'OK';

 

Если вам нужен сайт, но вы еще не можете его сделать самостоятельно, тогда можете заказать создание сайтов. Такой вариант может оказаться вполне приемлемый.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

×