首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

fgetcsv

(PHP 4, PHP 5, PHP 7)

fgetcsv - 从文件指针获取行并解析CSV字段

描述

代码语言:javascript
复制
array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]]] )

与fgets()类似,不同之处在于fgetcsv()解析为CSV格式的字段读取的行,并返回包含读取字段的数组。

参数

handle

指向由fopen(),popen()或fsockopen()成功打开的文件的有效文件指针。

length

必须大于CSV文件中找到的最长行(以字符为单位)(允许拖尾行尾字符)。否则,该行将以length字符块分割,除非分割将发生在外壳内。

省略此参数(或者在PHP 5.1.0及更高版本中将其设置为0),最大行长度不受限制,这稍微慢一些。

delimiter

可选delimiter参数设置字段分隔符(仅限一个字符)。

enclosure

可选enclosure参数设置柜字符(仅限一个字符)。

escape

可选escape参数设置转义字符(仅限一个字符)。

返回值

返回包含读取字段的索引数组。

注意:CSV文件中的空白行将以包含单个空字段的数组的形式返回,并且不会被视为错误。

注意:如果PHP在读取Macintosh计算机上创建的文件或由Macintosh计算机创建文件时未正确识别行结束,启用auto_detect_line_endings运行时配置选项可能有助于解决问题。

如果提供了无效句柄,则fgetcsv()将返回NULL,对其他错误(包括文件结尾)则返回FALSE。

更新日志

版本

描述

5.3.0

escape参数已添加

5.1.0

长度现在是可选的。默认值为0,意味着没有长度限制。

4.3.5

fgetcsv()现在是二进制安全的

例子

示例#1读取并打印CSV文件的全部内容

代码语言:javascript
复制
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

注意

注意:该功能考虑了区域设置。如果LANG是例如en_US.UTF-8,则通过此函数读取单字节编码的文件错误。

扩展内容

  • str_getcsv() - 将CSV字符串解析为数组
  • explode() - 按字符串拆分字符串
  • file() - 将整个文件读入一个数组
  • pack() - 将数据打包成二进制字符串
  • fputcsv() - 将行格式化为CSV并写入文件指针

← fgetc

fgets →

扫码关注腾讯云开发者

领取腾讯云代金券