(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::setCsvControl — 设置 CSV 的分隔符、包围符和转义字符
$separator
= ",", string $enclosure
= "\"", string $escape
= "\\"): void设置用于解析 CSV 字段的分隔符、包围符和转义字符。
separator
separator
参数设置字段分隔符。它必须是一个单字节字符。
enclosure
enclosure
参数设置字段包围符。它必须是一个单字节字符。
escape
escape
参数设置转义字符。它必须是一个单字节字符或空字符串。空字符串 (""
) 会禁用专有的转义机制。
注意: 通常,字段内的
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 ?>