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