fgetcsv
fgetcsv
(PHP 4, PHP 5, PHP 7)
fgetcsv - 从文件指针获取行并解析CSV字段
描述
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文件的全部内容
<?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 →