PHP Conference Japan 2024

SplFileObject::setCsvControl

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

SplFileObject::setCsvControl设置 CSV 的分隔符、包围符和转义字符

描述

public SplFileObject::setCsvControl(string $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。

返回值

不返回值。

错误/异常

如果 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