(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SplFileObject::fputcsv — Записывает массив полей как CSV-строки
$fields
,$separator
= ",",$enclosure
= "\"",$escape
= "\\",$eol
= "\n"
Метод записывает массив fields
в файл как строку CSV-файла.
fields
Массив значений.
separator
Необязательный параметр separator
устанавливает
разделитель полей (только один однобайтовый символ).
enclosure
Необязательный параметр enclosure
устанавливает
ограничитель полей (только один однобайтовый символ).
escape
Необязательный параметр escape
устанавливает символ
экранирования (не более одного однобайтового символа).
Пустая строка (""
) отключает собственный механизм экранирования.
eol
Необязательный параметр eol
устанавливает пользовательскую последовательность конца строки.
Строка в CSV-формате иногда перестаёт соответствовать стандарту » RFC 4180
или не выдерживает обмена информацией с PHP-функциями
для работы с CSV-строками, если для символа экранирования escape
устанавливают значение,
которое отличается от пустой строки ""
.
Значение по умолчанию для параметра escape
— "\\"
,
поэтому рекомендуют явно указывать пустую строку. Значение по умолчанию изменят в будущей версии PHP, но не раньше PHP 9.0.
Замечание:
Метод заэкранирует символ ограничителя полей
enclosure
путём удвоения, если поле содержит символ ограничителя, если только прямо перед символом ограничителя не стоит символ экранированияescape
.
Метод возвращает длину строки, которую записал, или false
, если возникла ошибка.
Метод возвращает false
и не записывает CSV-строку в файл, если параметры
separator
или enclosure
содержат больше одного символа.
Метод выдаёт ошибку уровня E_WARNING
, если параметр
separator
или enclosure
не односимвольный.
Версия | Описание |
---|---|
8.1.0 |
Добавили необязательный параметр eol .
|
7.4.0 |
Параметр escape теперь принимает пустую строку
для отключения механизма экранирования.
|
Пример #1 Пример использования метода SplFileObject::fputcsv()
<?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$file = new SplFileObject('file.csv', 'w');
foreach ($list as $fields) {
$file->fputcsv($fields);
}
?>
Приведённый пример записывает следующие строки в файл file.csv
:
aaa,bbb,ccc,dddd 123,456,789 """aaa""","""bbb"""