PHP Conference Japan 2024

SplFileObject::fputcsv

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SplFileObject::fputcsv将字段数组写入为 CSV 行

描述

public SplFileObject::fputcsv(
    数组 $fields,
    字符串 $separator = ",",
    字符串 $enclosure = "\"",
    字符串 $escape = "\\",
    字符串 $eol = "\n"
): 整数|false

$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

错误/异常

如果 separatorenclosure 不是一个字节长,则抛出 ValueError

如果 escape 不是一个字节长或空字符串,则抛出 ValueError

变更日志

版本 描述
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"""

参见

添加注释

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top