Порядок использования класса:
- В контроллере обработки 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();
Результат
[
0 => [
0 => ',',
1 => 'Запятая',
],
1 => [
0 => ';',
1 => 'Точка с запятой',
],
2 => [
0 => ' ',
1 => 'Табуляция',
],
]
public function getFields()
Возвращает массив столбцов, указанный с помощью метода setFields(), значения которых нужно получить.
Пример
$csv = new waCSV();
$csv->setFields([
0 => 'Наименование',
3 => 'Валюта',
]);
$fields = $csv->getFields();
Результат
[
0 => 'Наименование',
3 => 'Валюта',
]
public function getInfo()
Возвращает сводную информацию о CSV-файле: используемый разделитель, кодировка символов, заголовки, содержимое и количество столбцов.
Пример
$csv = new waCSV(false, ';');
$csv->upload('csv');
$info = $csv->getInfo();
Результат
[
'delimiter' => ';',
'encode' => false,
'fields' => [
0 => 'Наименование',
1 => 'Описание',
2 => 'Цена',
3 => 'Валюта',
],
'records' => [
0 => [
0 => '...',
1 => '...',
2 => '...',
3 => '...',
],
1 => [
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([
0 => 'Наименование',
2 => 'Цена',
3 => 'Валюта',
]);
$data = $csv->import();
Результат
[
1 => [
'Наименование' => 'Товар 1',
'Цена' => '699',
'Валюта' => 'RUB',
],
2 => [
'Наименование' => 'Товар 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([
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');









