PHP | fgetcsv 函数
Lasted 2020-12-31 16:44:34
fgetcsv 函数从文件指针中读入一行并解析 CSV 字段。
如果提供了无效的文件指针,fgetcsv() 会返回 null。其他错误,包括碰到文件结束时返回 false。CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。
函数定义
fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]]] ) : array
// 源文件位于:ext/standard/file.c
# 函数定义
PHP_FUNCTION(fgetcsv)
{
char delimiter = ','; /* allow this to be set as parameter */
char enclosure = '"'; /* allow this to be set as parameter */
int escape = (unsigned char) '\\';
zend_long len = 0;
size_t buf_len;
char *buf;
php_stream *stream;
{
...
if (delimiter_str != NULL) {
/* Make sure that there is at least one character in string */
if (delimiter_str_len != 1) {
zend_argument_value_error(3, "must be a single character");
RETURN_THROWS();
}
/* use first character from string */
delimiter = delimiter_str[0];
}
...
PHP_STREAM_TO_ZVAL(stream, fd);
}
if (len < 0) {
if ((buf = php_stream_get_line(stream, NULL, 0, &buf_len)) == NULL) {
RETURN_FALSE;
}
} else {
buf = emalloc(len + 1);
if (php_stream_get_line(stream, buf, len + 1, &buf_len) == NULL) {
efree(buf);
RETURN_FALSE;
}
}
php_fgetcsv(stream, delimiter, enclosure, escape, buf_len, buf, return_value);
}
参数
- checkhandle -文件指针。文件指针必须有效,并且是通过 fopen() 或 fsockopen() 函数成功打开的文件(并还未由 fclose() 关闭)。
- checklength -行长度,可选。
- checkdelimiter -设置字段分界符(只允许一个字符)。
- checkenclosure -设置字段环绕符(只允许一个字符)。
- checkescape -设置转义字符(只允许一个字符),默认是一个反斜杠。
返回值
- checkbool - 返回包含读取字段的索引数组。
示例1: - 使用 fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段。
<?php
/**
* PHP 使用 fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段。
*
* @since Version 1.0.0
* @filesource
*/
// 打开文件
$fp = fopen('foo.csv', 'r');
// 判断文件是否读取成功
if(!$fp) exit(0);
// 读取文件
$data = fgetcsv($fp);
// 关闭文件
fclose($fp);