PHP Conference Japan 2024

SplFileObject::setCsvControl

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

SplFileObject::setCsvControl設定 CSV 的分隔符號、括住字元和跳脫字元

說明

public SplFileObject::setCsvControl(字串 $separator = ",", 字串 $enclosure = "\"", 字串 $escape = "\\"): void

設定用於剖析 CSV 欄位的分隔符號、括住字元和跳脫字元。

參數

separator(分隔符號)

separator 參數設定欄位分隔符號。它必須是單一位元組字元。

enclosure(括住字元)

enclosure 參數設定欄位括住字元。它必須是單一位元組字元。

escape(跳脫字元)

escape 參數設定跳脫字元。它必須是單個位元組的字元或空字串。空字串 ("") 會停用專有的跳脫機制。

注意通常在欄位內,enclosure 字元會透過重複自身來跳脫;然而,escape 字元可以用作替代方案。因此,對於預設參數值來說,""\" 具有相同的含義。除了允許跳脫 enclosure 字元之外,escape 字元沒有其他特殊含義;它甚至不 meant to 跳脫自身。

警告

從 PHP 8.4.0 開始,依賴 escape 的預設值已被棄用。需要明確地提供它,可以透過位置參數或使用具名參數

警告

escape 設定為非空字串 ("") 時,可能會導致產生的 CSV 不符合 » RFC 4180 或是無法透過 PHP CSV 函式完整來回轉換。 escape 的預設值是 "\\",因此建議將其明確設定為空字串。預設值將在未來的 PHP 版本中更改,最早不早於 PHP 9.0。

返回值

不返回任何值。

錯誤/例外

如果 separatorenclosure 不是單個位元組長,則會拋出 ValueError

如果 escape 不是單個位元組長或空字串,則會拋出 ValueError

更新日誌

版本 說明
8.4.0 依賴 escape 的預設值現已被棄用。
7.4.0 escape 參數現在也接受空字串以停用專有的跳脫機制。

範例

範例 #1 SplFileObject::setCsvControl() 範例

<?php
$file
= new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl('|');
foreach (
$file as $row) {
list (
$fruit, $quantity) = $row;
// 處理這些值
}
?>

data.csv 的內容

<?php
apples|20
bananas|14
cherries|87
?>

參見

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top