Инструменты пользователя

Инструменты сайта


csv

Это старая версия документа!


Для отсутствия граблей оформляем файл в соответствии со стандартом RFC 4180 со следующими изменениями:

1). Файл должен быть сохранен в UTF-8 без BOM

2). Все значения полей csv должны быть заключены в двойные кавычки (")

3). Поля должны быть разделены (;)

4). Поля не должны содержать переводов строки (\n)

5). Все печатные служебные символы (;"\) внутри полей должны быть экранированы обратным слешем (\)

Пакеты MS Excel и OpenOffice некорректно читают экранирование в csv формате, поэтому для быстрой правки используем LibreOffice

Пример:

"name";"description";

"Наименование";"<span clss=\"red\">Красный текст</span>";

"Наименование";"<span clss=\"blue\">Синий текст</span>";

Запись данных csv:

           //Преобразовать тектовое значение в поле csv
	function csv_quote($text) {
		$text=trim($text);
		$text=str_replace("\r\n",'', $text);
		$text=str_replace("\n",'', $text);
		$text=str_replace('"','\\"', $text);
		$text=str_replace(';','\\;', $text);
		return '"'.$text.'";';
	}
 
           //Сохранить массив в csv. Ключи первого элемента запишутся как заголовки
	function save_csv($filename, $items){
		$keys = array_keys($items[0]);
		foreach($keys as $key) {
			$content.= csv_quote($key);
		}
		$content.="\n";
		foreach($items as $item) {
			foreach($item as $value) {
				$content .= csv_quote($value);
			}
			$content.="\n";
		}
		file_put_contents($filename, $content);
	}
 
Чтение данных CSV:
 
		$fp = fopen($filename, "rt");
		$data=fgetcsv($fp,0,";");
		fclose($fp);
csv.1555198119.txt.gz · Последние изменения: 2019/04/14 02:28 — a1