(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SplFileObject::fputcsv — 将字段数组写入为 CSV 行
$fields
,$separator
= ",",$enclosure
= "\"",$escape
= "\\",$eol
= "\n"将 $fields
数组作为 CSV 行写入文件。
fields
一个值数组。
separator
字段分隔符(只能是一个单字节字符)。默认为 ,
或 SplFileObject::setCsvControl() 的先前调用设置的值。
enclosure
字段围封字符(只能是一个单字节字符)。默认为 "
或 SplFileObject::setCsvControl() 的先前调用设置的值。
escape
转义字符(最多一个单字节字符)。默认为 \
或 SplFileObject::setCsvControl() 的先前调用设置的值。空字符串 (""
) 将禁用专有的转义机制。
注意: 通常,字段内的
enclosure
字符通过重复来转义;但是,可以使用escape
字符作为替代。因此,对于默认参数值""
和\"
具有相同的含义。除了允许转义enclosure
字符外,escape
字符没有任何特殊含义;它甚至不打算转义自身。
从 PHP 8.4.0 开始,依赖于 escape
的默认值已弃用。需要显式地通过位置参数或使用 命名参数,或者通过调用 SplFileObject::setCsvControl() 来提供。
eol
可选的 eol
参数设置自定义行结束符序列。
当 escape
设置为非空字符串 (""
) 时,可能会导致生成的 CSV 不符合 » RFC 4180 或无法通过 PHP CSV 函数进行往返转换。 escape
的默认值为 "\\"
,因此建议显式将其设置为空字符串。默认值将在 PHP 的未来版本(不早于 PHP 9.0)中更改。
注意:
如果字段中包含
enclosure
字符,除非它紧接在escape
字符之前,否则它将通过重复来转义。
返回写入字符串的长度,或者在失败时返回 false
。
版本 | 描述 |
---|---|
8.4.0 | 依赖于 escape 的默认值现在已弃用。 |
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"""