(PHP 5 >= 5.3.0, PHP 7, PHP 8)
str_getcsv — 解析 CSV 字符串为一个数组
$string
,$separator
= ",",$enclosure
= "\"",$escape
= "\\"以 CSV 字段格式解析字符串输入,并返回包含读取字段的数组。
注意:
此函数会考虑区域设置。例如,如果
LC_CTYPE
为en_US.UTF-8
,可能会错误的解析某些单字节编码的数据。
string
待解析的字符串。
separator
可选的 separator
参数,设置字段分隔符。必须是单字节字符。
enclosure
可选的 enclosure
参数,设置字段环绕符。必须是单字节字符。
escape
可选的 escape
参数,设置转义字符。必须是单字节字符或者空字符串。空字符串(""
)禁用所有的转义机制。
注意: 通常,在字段内,通过双倍的
enclosure
字符对其进行转义;但是可以使用escape
字符作为替代。因此,对于默认参数值,""
和\"
具有相同的含义。除了允许转义enclosure
字符外,escape
字符没有特殊含义;甚至不打算转义自身。
从 PHP 8.4.0 开始,弃用依赖 escape
的默认值。需要通过位置或使用命名参数明确提供。
当 escape
被设置为非空字符串(""
)时,
可能导致生成的 CSV 不符合 » RFC 4180 的要求,
或者无法通过 PHP CSV 函数的往返处理。
escape
的默认值是 "\\"
,因此建议显式地将其设置为空字符串。
默认值将在未来的 PHP 版本中更改,不早于 PHP 9.0。
返回一个包含读取到的字段的索引数组。
版本 | 说明 |
---|---|
8.4.0 | 现在已弃用依赖 escape 的默认值。 |
8.4.0 |
如果 separator 、enclosure
或 escape 无效,现在会抛出 ValueError。这模仿了
fgetcsv() 和 fputcsv() 的行为。
|
8.3.0 | 如果最后一个字段仅包含未终止的 enclosure,则返回空字符串,而不是带有单个 NULL 字节的字符串。 |
7.4.0 |
escape 现在将空字符串视为禁用专有转义机制的信号。以前视为默认参数值。
|
示例 #1 str_getcsv() 示例
<?php
$string = 'PHP,Java,Python,Kotlin,Swift';
$data = str_getcsv($string);
var_dump($data);
?>
以上示例会输出:
array(5) { [0]=> string(3) "PHP" [1]=> string(4) "Java" [2]=> string(6) "Python" [3]=> string(6) "Kotlin" [4]=> string(5) "Swift" }
示例 #2 处理空字符串的 str_getcsv() 示例
对于空字符串,此函数返回值 [null]
从而代替空数组。
<?php
$string = '';
$data = str_getcsv($string);
var_dump($data);
?>
以上示例会输出:
array(1) { [0]=> NULL }