fgetcsv 从文件指针中读入一行并解析 CSV 字段 &reftitle.description; arrayfalsefgetcsv resourcestream intnulllength&null; stringseparator"," stringenclosure"\"" stringescape"\\" fgets 类似,只除了 fgetcsv 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。 此函数会考虑区域设置。例如,如果 LC_CTYPEen_US.UTF-8,可能会错误的解析某些单字节编码的数据。 &reftitle.parameters; stream 一个由 fopenpopenfsockopen 产生的有效文件指针。 length 必须大于在 CVS 文件(允许尾随行尾字符)中找到的最长行(以字符为单位)。否则,该行将拆分为 length 字符的块,除非拆分发生在环绕字符内。 忽略此参数(或者设为 0 或者在 PHP 8.0.0 及以后的版本中设为 &null;)行的最大长度将不受限制,速度稍慢。 separator 可选的 separator 参数,设置字段分隔符。必须是单字节字符。 enclosure 可选的 enclosure 参数,设置字段环绕符。必须是单字节字符。 escape 可选的 escape 参数,设置转义字符。必须是单字节字符或者空字符串。空字符串("")禁用所有的转义机制。 通常,在字段内,通过双倍的 enclosure 字符对其进行转义;但是可以使用 escape 字符作为替代。因此,对于默认参数值,""\" 具有相同的含义。除了允许转义 enclosure 字符外,escape 字符没有特殊含义;甚至不打算转义自身。 从 PHP 8.4.0 开始,弃用依赖 escape 的默认值。需要通过位置或使用命名参数明确提供。 &warning.csv.escape-parameter; &reftitle.returnvalues; 成功时返回包含读取字段的索引数组,&return.falseforfailure;。 CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。 ¬e.line-endings; &reftitle.errors; 如果 separator 或者 enclosure 长度不是一个字节,则抛出 ValueError 如果 escape 的长度不是一个字节或者为空字符串,则抛出 ValueError &reftitle.changelog; &Version; &Description; 8.4.0 现在已弃用依赖 escape 的默认值。 8.3.0 如果最后一个字段仅包含未终止的 enclosure,则返回空字符串,而不是带有单个 NULL 字节的字符串。 8.0.0 现在 length 允许为 null. 7.4.0 escape 参数也接受空字符串来禁用所有的转义机制。 &reftitle.examples; 读取并显示 CSV 文件的整个内容 $num fields in line $row:

\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "
\n"; } } fclose($handle); } ?> ]]>
&reftitle.seealso; fputcsv str_getcsv SplFileObject::fgetcsv SplFileObject::fputcsv SplFileObject::setCsvControl SplFileObject::getCsvControl explode file pack