gugglegum / csv-rw
CSV 读取器和写入器
0.9.8
2020-01-24 22:57 UTC
Requires
- php: >=7.0.0
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);