Порядок использования класса:
- В контроллере обработки POST-запроса для загрузки CSV-файла создать экземпляр класса
waCSV
. Загружаемый CSV-файл должен быть доступен в массиве$_FILES
. - С помощью метода
upload()
загрузить файл в директорию для временных файлов. - С помощью метода
getInfo()
получить информацию о структуре файла: заголовки, содержимое и количество столбцов. - С помощью метода
setFields()
выбрать столбцы, содержимое которых нужно получить. - С помощью метода
import()
получить содержимое выбранных столбцов.
Методы
-
getDelimiters
Возвращает список разделителей, используемых в CSV-файлах.
-
getFields
Возвращает массив столбцов, указанный с помощью метода
setFields()
, значения которых нужно получить. -
getInfo
Возвращает сводную информацию о CSV-файле.
-
import
Возвращает содержимое столбцов CSV-файла.
-
saveContent
Сохраняет текстовое содержимое в CSV-файл.
-
setEncoding
Устанавливает кодировку символов для чтения файла.
-
setFields
Устанавливает список столбцов CSV-файла, из которых нужно извлечь данные.
-
setFile
Устанавливает имя CSV-файла в директории со временными файлами, из которого нужно извлечь данные.
-
upload
Загружает CSV-файл на сервер.
public static function getDelimiters()
Возвращает список разделителей, используемых в CSV-файлах.
Пример
waCSV::getDelimiters()
Результат
array( 0 => array( 0 => ',', 1 => 'Запятая', ), 1 => array( 0 => ';', 1 => 'Точка с запятой', ), 2 => array( 0 => ' ', 1 => 'Табуляция', ), )
public function getFields()
Возвращает массив столбцов, указанный с помощью метода setFields()
, значения которых нужно получить.
Пример
$csv = new waCSV(); $csv->setFields(array( 0 => 'Наименование', 3 => 'Валюта', )); $fields = $csv->getFields();
Результат
array( 0 => 'Наименование', 3 => 'Валюта', )
public function getInfo()
Возвращает сводную информацию о CSV-файле: используемый разделитель, кодировка символов, заголовки, содержимое и количество столбцов.
Пример
$csv = new waCSV(false, ';'); $csv->upload('csv'); $info = $csv->getInfo();
Результат
array( 'delimiter' => ';', 'encode' => false, 'fields' => array( 0 => 'Наименование', 1 => 'Описание', 2 => 'Цена', 3 => 'Валюта', ), 'records' => array( 0 => array( 0 => '...', 1 => '...', 2 => '...', 3 => '...', ), 1 => array( 0 => '...', 1 => '...', 2 => '...', 3 => '...', ), ... ), 'count' => 38, )
public function import ($limit = 50)
Возвращает содержимое столбцов CSV-файла, указанных в поле fields
с помощью метода setFields()
. Если поле fields
пустое, метод возвращает содержимое всех столбцов файла.
Параметры
-
$limit
Количество строк файла, из которых нужно считать значения столбцов. Ограничение по умолчанию — 50.
Пример
$csv = new waCSV(); $csv->upload('csv'); $csv->setFields(array( 0 => 'Наименование', 2 => 'Цена', 3 => 'Валюта', )); $data = $csv->import();
Результат
array( 1 => array( 'Наименование' => 'Товар 1', 'Цена' => '699', 'Валюта' => 'RUB', ), 2 => array( 'Наименование' => 'Товар 2', 'Цена' => '799', 'Валюта' => 'RUB', ), ... )
public function saveContent ($content)
Сохраняет текстовое содержимое в CSV-файл. Удобно для импорта данных из содержимого, сформированного как CSV-файл, но полученного не из файла, а из другого источника, например, из POST-запроса.
Параметры
-
$content
Текстовое содержимое для сохранения в CSV-файл.
Пример
$csv = new waCSV(); $csv_content = waRequest::post('csv'); $csv->saveContent($csv_content); $data = $csv->import();
public function setEncoding ($encoding)
Устанавливает кодировку символов для чтения файла. По умолчанию для чтения CSV-файлов используется кодировка UTF-8. Если файл сохранен в другой кодировке, перед извлечением содержимого нужно установить его кодировку.
Параметры
-
$encoding
Обозначение кодировки символов.
Пример
$csv = new waCSV(); $csv->setEncoding('windows-1251');
public function setFields ($fields)
Устанавливает список столбцов CSV-файла, из которых нужно извлечь данные с помощью метода import()
.
Параметры
-
$fields
Ассоциативный массив столбцов: ключ — порядковый номер столбца начиная с 0, значение — заголовок столбца из первой строки CSV-файла.
Пример
$csv = new waCSV(); $csv->upload('csv'); $csv->setFields(array( 0 => 'Наименование', 2 => 'Цена', 3 => 'Валюта', )); $data = $csv->import();
public function setFile ($file)
Устанавливает имя CSV-файла в директории со временными файлами, из которого нужно извлечь данные. Удобно использовать для поочередных операций с несколькими CSV-файлами.
Параметры
-
$file
Имя CSV-файла в директории для временных файлов.
Пример
$csv = new waCSV(); $post_csv = waRequest::post('csv'); $uploaded_as_text = $csv->saveContent($post_csv); $uploaded_as_file = csv->upload('csv'); $csv->setFile($uploaded_as_text); $data_from_text = $csv->import(); $csv->setFile($uploaded_as_file); $data_from_file = $csv->import();
public function upload ($name)
Загружает CSV-файл на сервер.
Параметры
-
$name
Значение атрибута
name
поля типаfile
веб-формы, через которую загружается CSV-файл.
Пример
$csv = new waCSV(); csv->upload('csv');