Code前端首页关于Code前端联系我们

如何使用fgetcsv函数

terry 2年前 (2023-09-30) 阅读数 51 #PHP
文章标签 PHP

1.fgetcsv函数是什么?

fgetcsv() 函数是一个 PHP 文件处理函数,用于从打开的文件句柄中读取一行并将其解析为 CSV 数组。 CSV(逗号分隔值)是一种常见的数据格式,使用逗号分隔不同的字段。此功能通常用于读取 CSV 格式的数据文件。

2。函数 fgetcsv

的语法

fgetcsv(FILE_HANDLE、LENGTH、DELIMITER、ENCLOSURE、ESCAPE)

  • FILE_HANDLE:必选选项,文件句柄。
  • LENGTH:可选指定每行的字符限制。默认值为0,表示读取整行。
  • DELIMITER:可选,输入CSV分隔符,默认为逗号(,)。
  • ENCLOSURE:可选,输入周围的CSV字段符号,默认为双引号(“)。
  • ESCAPE:可选,指定 CSV 字段中的转义符号,默认为反斜杠 (\)。

3。函数fgetcsv的返回值

函数

fgetcsv() 返回已解析的 CSV 字段,如果到达文件末尾,则返回 false。如果读取数据时发生错误,该函数将返回 null。

$fp = fopen('data.csv', 'r');
while ($data = fgetcsv($fp)) {
  var_dump($data);
}
fclose($fp);

4。如何使用fgetcsv函数读取CSV文件?

假设我们有一个名为 data.csv 的 CSV 文件,其中包含以下内容:

Name, Age, Gender
Tom, 25, Male
Lily, 32, Female
Jack, 18, Male

我们可以使用以下代码来读取文件:

$fp = fopen('data.csv', 'r');
while ($data = fgetcsv($fp)) {
  echo $data[0] . ' is a ' . $data[2] . ' aged ' . $data[1] . '
'; } fclose($fp);

代码使用 while 循环来读取文件中的每一行。在每个循环中,文件句柄被传递给 fgetcsv 函数,并且解析字段的数组被分配给 $data 数组。然后使用$data字段中的数据输出每个人的姓名、年龄和性别。

5。如何处理CSV文件中的空值?

CSV文件中可能存在一些空值,例如以下数据:
汤姆,25,男,
Lily,32岁,女,已婚
读取时,fgetcsv函数省略了逗号后面的空值,因此数组数组会缺少对应的元素。为了解决这个问题,我们可以在读取数据之前替换掉CSV文件中的逗号和空值,例如:

$fp = fopen('data.csv', 'r');
while ($data = fgetcsv($fp)) {
  $data = str_replace(",", ", ,", $data);
  $data = str_replace(",,", ", ,", $data);
  echo $data[0] . ' is a ' . $data[2] . ' aged ' . $data[1] . '
'; } fclose($fp);

代码中,我们使用str_replace函数将逗号替换为逗号+空格。这样,即使数组字段中存在空值,也保证对应的元素存在并且数据不会移位。

6。如何处理CSV文件中的中文字符?

CSV 文件中可能存在中文字符,fgetcsv 默认情况下可能无法正确解析中文字符。为了解决这个问题,我们可以在读取文件之前将文件的编码转换为UTF-8。您可以使用以下代码进行转账:

$fp = fopen('data.csv', 'r');
while (!feof($fp)) {
  $line = rtrim(fgets($fp));
  $line = iconv('GB2312', 'UTF-8//IGNORE', $line);
  $data = str_getcsv($line);
  echo $data[0] . ' is a ' . $data[2] . ' aged ' . $data[1] . '
'; } fclose($fp);

在代码中,我们使用 iconv 函数将 GB2312 编码文件的内容转换为 UTF-8 编码格式。在使用fgetcsv函数读取数据时,我们切换到str_getcsv函数,将每一行数据转换为对应的数据字段。这样就可以正确处理汉字了。

7。如何使用fgetcsv函数写入CSV文件?

fgetcsv函数可用于读取CSV文件,但如果要将数据写入CSV文件,可以使用fputcsv函数。

$fp = fopen('data.csv', 'w');
$data = array('Tom', '25', 'Male');
fputcsv($fp, $data);
$data = array('Lily', '32', 'Female');
fputcsv($fp, $data);
$data = array('Jack', '18', 'Male');
fputcsv($fp, $data);
fclose($fp);

在代码中,我们首先使用 fopen 函数打开一个名为 data.csv 的文件,并将文件句柄保存到 $fp 变量中。接下来,我们定义一个名为 $data 的字段,其中包含来自三个字段的数据。使用 fputcsv 函数将 $data 字段中的数据写入 CSV 文件。最后,使用 fclose 函数关闭文件。

8。如何自定义 CSV 分隔符和括号符号?

默认情况下,fgetcsv 函数使用逗号作为 CSV 文件的分隔符,并使用双引号作为周围的符号。如果需要修改分隔符和括号符号,可以在调用fgetcsv时传递自定义参数。

$fp = fopen('data.csv', 'r');
while ($data = fgetcsv($fp, 0, ';', "'")) {
  echo $data[0] . ' is a ' . $data[2] . ' aged ' . $data[1] . '
'; } fclose($fp);

我们在代码中使用我们自己的分隔符和方形符号。在 fgetcsv 函数中,我们将所有逗号替换为分号,将双引号替换为单引号。这样我们就成功定制了CSV文件的分隔符和括号符号了。

9。如何使用fgetcsv函数加载CSV文件中的数据并将其插入数据库?

使用fgetcsv函数加载CSV文件中的数据并将其插入数据库中。这是示例代码:

$fp = fopen('data.csv', 'r');
while ($data = fgetcsv($fp)) {
  $name = $data[0];
  $age = $data[1];
  $gender = $data[2];
  $sql = "INSERT INTO users (name, age, gender) VALUES ('$name', $age, '$gender')";
  mysqli_query($conn, $sql);
}
fclose($fp);

在代码中,我们使用 while 循环读取 CSV 文件中的每一行并将其拆分为单独的数据。然后,我们使用这些数据构建 INSERT 语句,并使用 mysqli_query 函数将其插入数据库。

10。总结

函数

fgetcsv是PHP中常用的文件函数,可以用来读取CSV格式的数据文件。通过这篇文章,我们了解了fgetcsv函数的语法和返回值以及如何使用fgetcsv函数读取CSV文件中的数据并处理其中的空值和汉字。我们还学习了如何使用 fgetcsv 函数写入 CSV 文件以及自定义 CSV 文件中的分隔符和括号。最后,我们提供了一个将 CSV 文件中的数据插入数据库的实际示例。我希望您觉得这篇文章有用。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门