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 PHP 8.4.0
8.1.0 依賴 escape 的預設值現已棄用。
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