(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::setCsvControl — 設定 CSV 的分隔符號、括住字元和跳脫字元
$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。
不返回任何值。
版本 | 說明 |
---|---|
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 ?>