PHP: SplFileObject::fputcsv - Manual
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SplFileObject::fputcsv — Write a field array as a CSV line
Parameters
fields-
An array of values.
separator-
The field delimiter (one single-byte character only). By default
,or the value set by a prior call to SplFileObject::setCsvControl(). enclosure-
The field enclosure character (one single-byte character only). By default
"or the value set by a prior call to SplFileObject::setCsvControl(). escape-
The escape character (at most one single-byte character). By default
\or the value set by a prior call to SplFileObject::setCsvControl(). An empty string ("") disables the proprietary escape mechanism.Warning
In the input stream, the
enclosurecharacter can always be escaped by doubling it inside a quoted string, resulting in a singleenclosurecharacter in the parsed result. Theescapecharacter works differently: If a sequence ofescapeandenclosurecharacters appear in the input, both characters will be present in the parsed result. So for the default parameters, a CSV line like"a""b","c\"d"will have the fields parsed asa"bandc\"d, respectively. eol-
The optional
eolparameter sets a custom End of Line sequence.
Warning
When escape is set to anything other than an empty string
("") it can result in CSV that is not compliant with
» RFC 4180 or unable to survive a roundtrip
through the PHP CSV functions. The default for escape is
"\\" so it is recommended to set it to the empty string explicitly.
The default value will change in a future version of PHP, no earlier than PHP 9.0.
Note:
If an
enclosurecharacter is contained in a field, it will be escaped by doubling it, unless it is immediately preceded by anescape.
Return Values
Returns the length of the written string or false on failure.
Errors/Exceptions
Throws a ValueError if
separator or enclosure
is not one byte long.
Throws a ValueError if
escape is not one byte long or the empty string.
Changelog
| Version | Description |
|---|---|
| 8.4.0 |
Relying on the default value of escape is now
deprecated.
|
| 8.1.0 |
The optional eol parameter has been added.
|
| 7.4.0 |
The escape parameter now also accepts an empty
string to disable the proprietary escape mechanism.
|
Examples
Example #1 SplFileObject::fputcsv() example
<?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);
}
?>The above example will write the following to file.csv:
aaa,bbb,ccc,dddd 123,456,789 """aaa""","""bbb"""
See Also
- SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields
- SplFileObject::setCsvControl() - Set the delimiter, enclosure and escape character for CSV
- SplFileObject::getCsvControl() - Get the delimiter, enclosure and escape character for CSV
- fputcsv() - Format line as CSV and write to file pointer
- fgetcsv() - Gets line from file pointer and parse for CSV fields
- str_getcsv() - Parse a CSV string into an array
Found A Problem?
There are no user contributed notes for this page.