(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::setCsvControl — 设置 CSV 的分隔符、包围符和转义字符
$separator = ",", string $enclosure = "\"", string $escape = "\\"): void设置用于解析 CSV 字段的分隔符、包围符和转义字符。
separatorseparator 参数设置字段分隔符。它必须是一个单字节字符。
enclosureenclosure 参数设置字段包围符。它必须是一个单字节字符。
escapeescape 参数设置转义字符。它必须是一个单字节字符或空字符串。空字符串 ("") 会禁用专有的转义机制。
注意: 通常,字段内的
enclosure字符通过重复来转义;但是,可以使用escape字符作为替代。因此,对于默认参数值""和\"具有相同的含义。除了允许转义enclosure字符外,escape字符没有特殊含义;它甚至不打算转义自身。
从 PHP 8.4.0 开始,依赖于 escape 的默认值已弃用。需要显式地按位置或使用 命名参数 提供它。
当 escape 设置为除空字符串 ("") 之外的任何内容时,可能会导致不符合 » RFC 4180 或无法通过 PHP CSV 函数进行往返的 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 ?>