📜  在 php 中上传 csv 文件(1)

📅  最后修改于: 2023-12-03 15:23:14.974000             🧑  作者: Mango

在 PHP 中上传 CSV 文件

CSV文件是一种常见的电子表格格式,用于存储和传输表格数据。在PHP中,上传CSV文件非常简单,只需要使用PHP内置的上传函数和CSV解析库即可。

文件上传

首先,我们需要使用PHP内置的上传函数将CSV文件上传到服务器。PHP提供了一个全局变量$_FILES用于处理上传的文件。我们可以使用$_FILES['file']['tmp_name']访问上传文件的临时文件名。

if(isset($_FILES['file'])) {
  $file = $_FILES['file']['tmp_name'];
  $fileOpen = fopen($file, "r");
  // 处理CSV文件
  fclose($fileOpen);
}

上面的代码检查了是否有文件上传,然后打开了上传文件的临时文件。现在我们可以使用PHP解析CSV文件了。

CSV解析

PHP提供了多种解析CSV文件的方法。其中,fgetcsv函数是最常用的一种方法。fgetcsv函数读取CSV文件中的一行,并将其分解为一个数组。我们可以使用循环来读取每一行,并将其转换为PHP数据结构。

if(isset($_FILES['file'])) {
  $file = $_FILES['file']['tmp_name'];
  $fileOpen = fopen($file, "r");

  $data = array();
  while ($row = fgetcsv($fileOpen)) {
    $data[] = $row;
  }

  // 处理CSV数据
  fclose($fileOpen);
}

上面的代码在一个名为$data的数组中存储了CSV文件的所有行。现在我们可以使用PHP处理CSV数据了。

示例代码

下面是一个完整的PHP脚本,用于上传CSV文件并显示它的内容。

<?php
if(isset($_FILES['file'])) {
  $file = $_FILES['file']['tmp_name'];
  $fileOpen = fopen($file, "r");
  
  $data = array();
  while ($row = fgetcsv($fileOpen)) {
    $data[] = $row;
  }

  fclose($fileOpen);
?>
  <table>
    <?php foreach($data as $row): ?>
    <tr>
      <?php foreach($row as $cell): ?>
      <td><?php echo $cell ?></td>
      <?php endforeach; ?>
    </tr>
    <?php endforeach; ?>
  </table>
<?php
} else {
?>
  <form method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">上传</button>
  </form>
<?php
}
?>

上面的代码显示了一个表单,其中包含一个用于选择CSV文件的文件选择器。如果用户提交了一个CSV文件,它将被上传并显示在一个HTML表格中。如果没有上传文件,将显示上传表单。

总结

在PHP中上传CSV文件非常简单。我们只需要使用PHP内置的上传函数和CSV解析库就可以完成任务。在进行CSV解析时,我们可以使用fgetcsv函数将CSV数据转换为PHP数据结构。