(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"""