fputcsv

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

fputcsv将行格式化为 CSV 并写入文件指针

说明

fputcsv(
    resource $stream,
    array $fields,
    string $separator = ",",
    string $enclosure = "\"",
    string $escape = "\\",
    string $eol = "\n"
): int|false

fputcsv() 将一行(用 fields 数组传递)格式化为 CSV 格式并写入由 stream 指定的文件。

参数

stream

文件指针必须是有效的,必须指向由 fopen()fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

fields

string 数组。

separator

可选的 separator 参数设定字段分界符(只允许一个单字节字符)。

enclosure

可选的 enclosure 参数设定字段字段环绕符(只允许一个单字节字符)。

escape

可选的 escape 参数设置转义字符(只允许一个单字节字符)。空字符串("")禁用专有转义机制。

eol

可选的 eol 参数设置自定义行尾序列。

警告

escape 被设置为非空字符串("")时, 可能导致生成的 CSV 不符合 » RFC 4180 的要求, 或者无法通过 PHP CSV 函数的往返处理。 escape 的默认值是 "\\",因此建议显式地将其设置为空字符串。 默认值将在未来的 PHP 版本中更改,不早于 PHP 9.0。

注意:

If an enclosure character is contained in a field, it will be escaped by doubling it, unless it is immediately preceded by an escape.

返回值

返回写入字符串的长度, 或者在失败时返回 false

更新日志

版本 说明
8.1.0 新增可选的 eol 参数。
7.4.0 escape 参数现在接受空字符串来禁用专有转义机制。

示例

示例 #1 fputcsv() 例子

<?php

$list
= array (
array(
'aaa', 'bbb', 'ccc', 'dddd'),
array(
'123', '456', '789'),
array(
'"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach (
$list as $fields) {
fputcsv($fp, $fields);
}

fclose($fp);
?>

以上例子会写入以下的file.csv

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

注释

注意: 在读取在 Macintosh 电脑中或由其创建的文件时, 如果 PHP 不能正确的识别行结束符,启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

参见

  • fgetcsv() - 从文件指针中读入一行并解析 CSV 字段