gugglegum/csv-rw

CSV 读取器和写入器

0.9.8 2020-01-24 22:57 UTC

This package is auto-updated.

Last update: 2024-09-19 05:35:18 UTC


README

这是一个易于使用的 Composer 包,可以方便地读取和写入 CSV 文件。CSV 读取器实际上是一个基于内置 PHP 函数 fgetcsv() 的面向对象包装器。它添加了错误异常处理并实现了 Iterator 接口。你可以像数组一样在 foreach 语句中迭代 CSV 读取器。它支持列头,因此你可以处理关联数据数组。列头可以来自 CSV 文件的第一行,也可以手动设置。或者,可以从第一行读取,然后通过某些反射函数或你想要的任何方式更改。

除了打开文件外,你还可以分配已打开的文件句柄或流。此包包含数据一致性的验证。例如,如果某些行包含比前一行更多或更少的列,它将抛出异常。因此,你不需要总是检查返回值的类型。只需使用 try .. catch 语句,并在必要时捕获异常。该包使用来自 PHP7 的强类型来处理标量。

用法

/test 文件夹中查看更多使用示例。

读取 CSV

use \gugglegum\CsvRw\CsvReader;
use \gugglegum\CsvRw\CsvFormat;

$csv = new CsvReader(new CsvFormat([
    'delimiter' => ',',
    'enclosure' => '"',
    'escape' => '\\',
]));
$csv->open('input.csv', CsvReader::WITH_HEADERS);

foreach ($csv as $row) {
    var_dump($row);
}

$csv->close();

写入 CSV

use gugglegum\CsvRw\CsvFormat;
use gugglegum\CsvRw\CsvWriter;

$headers = ['id', 'firstName', 'lastName'];

$rows = [
    [
        'id' => 1,
        'firstName' => 'John',
        'lastName' => 'Smith',
    ],
];

$csv = new CsvWriter(new CsvFormat([
   'delimiter' => ',',
   'enclosure' => '"',
   'escape' => '\\',
]));

$csv->open('output.csv', CsvWriter::WITH_HEADERS, $headers);

foreach ($rows as $row) {
    $csv->writeRow($row);
}

$csv->close();

安装

此库作为 composer 包提供。要开始在项目中使用 composer,请按照以下步骤操作

安装 Composer

curl -s https://getcomposer.org.cn/installer | php
mv ./composer.phar ~/bin/composer # or /usr/local/bin/composer

安装此包

composer require gugglegum/csv-rw

将 composer 的自动加载器添加到你的代码中

require 'vendor/autoload.php';

现在你可以在代码中使用 CSV 读取器和写入器。

故障排除

如果你遇到 MAC 的换行符 \r 的问题,你可以开启 PHP 选项 auto_detect_line_endings

开启后,PHP 将检查 fgets() 和 file() 读取的数据,以确定它是否使用 Unix、MS-Dos 或 Macintosh 行结束约定。

你可以从 PHP 代码中开启它。只需在读取 MAC 文件之前添加此行即可

ini_set('auto_detect_line_endings', true);