jeroenzwart/php-csv-iterator

一个简单的CSV读取器,使用PHP迭代器以数组/对象的形式读取

v1.0.3 2020-05-28 21:25 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:53 UTC


README

使用PHP迭代器的简单CSV读取器

PHP from Packagist GitHub code size in bytes GitHub release (latest SemVer) Scrutinizer build (GitHub/Bitbucket) Scrutinizer coverage (GitHub/BitBucket) Scrutinizer code quality (GitHub/Bitbucket)

此包是一种读取CSV文件的简单方法。CSV读取器将迭代CSV文件,内存使用量低。

特性

  • 返回具有标题键的数组。
  • 读取CSV文件中的特定行。
  • 跳过空行。
  • 以偏移量和/或限制读取CSV文件。

安装

通过Composer

$ composer require jeroenzwart/php-csv-iterator

用法

以下示例是CSV文件 ./csv/movies.csv 的一部分;

    name,year_release,order,imdb_rating
    Star Wars Episode I – The Phantom Menace,1999,1,6.5
    Star Wars Episode II – Attack of the Clones,2002,2,6.5 

要遍历CSV文件中的每个项目,请按如下方式使用读取器;

$csv = new \JeroenZwart\CsvIterator\CsvReader('../csv/movies.csv');
$csv->delimiter('"')
foreach ($csv as $line) {
    var_dump($line)
    // Or do something with $line...
}
// The first dump will look like this
// class stdClass(4) {
//     public 'name' => string(42) "Star Wars Episode I – The Phantom Menace"
//     public 'year_release' => string(4) "1999"
//     public 'order' => string(1) "1"
//     public 'imdb_rating' => string(3) "6.5"
// }

或使用默认迭代器方法之一;

$csv = new \JeroenZwart\CsvIterator\CsvReader('../csv/movies.csv');
$line = $csv->next()->current();

选项

  • filePath (字符串) - CSV文件的路径。
  • offset (整数 0) - 从CSV文件开始读取的偏移量。
  • limit (整数 -1) - 读取CSV文件结束的限制。
  • delimiter (字符串 ,) - CSV文件中的分隔符字符。
  • enclosure (字符串 ") - CSV文件中的封装字符。
  • escape (字符串 \) - CSV文件中的转义字符。
  • hasHeaders (布尔值 TRUE) - 设置CSV文件是否有标题,如果没有,则设置为FALSE。
  • asObject (布尔值 TRUE) - 将CSV文件的行作为对象返回,设置为FALSE作为数组。
  • keepEmptyLines (布尔值 FALSE) - 设置为TRUE以保留CSV文件中的空行。

示例

偏移量和限制

使用偏移量和限制从另一个位置开始读取;

$csv = new CsvReader('../csv/actors.csv', 3, 5);
foreach ($csv as $line) {
    // Do something with $line...
}

分隔符、封装和转义

使用不同的分隔符、封装和转义读取;

$csv = new CsvReader('../csv/actors.csv');
$csv->delimiter(';')->enclose('`')->escape('');
foreach ($csv as $line) {
    // Do something with $line...
}

要获取当前的分隔符、封装或转义,请使用 $csv->delimiter()

标题、asObject和空

忽略CSV文件中的标题并返回具有常规键的数组,但保留空行;

$csv = new CsvReader('../csv/actors.csv');
$csv->headers(false)->asObject(false)->empty(true);
foreach ($csv as $line) {
    // Do something with $line...
}

要获取CSV文件的标题作为数组,请使用 $csv->headers()。要获取设置asObject或空的模式,可以使用 $csv->asObject()$csv->empty()

位置

加载给定位置的一行;

$csv = new CsvReader('../csv/actors.csv');
var_dump($csv->position(3));

要获取迭代器的当前位置,请使用 $csv->position()

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

许可证

请参阅许可证文件以获取更多信息。