arielcr/php-csv-parser

将 CSV 转换为数组(完全支持 Excel 样式!)

2.0 2022-10-19 01:11 UTC

This package is auto-updated.

Last update: 2024-09-19 05:26:15 UTC


README

这是对 kzykhys/PHPCsvParser 的分支。

此分支的唯一目的是完全支持 PHP 8 并修复一些弃用警告。

所有核心功能保持不变。

将 CSV 转换为数组/迭代器(完全支持 Excel 样式!)

为什么选择 PHPCsvParser?

正如您所知,PHP 有内置的 fgetcsv 函数。但是有一些问题

  • 单元格中的换行符
  • 多字节字符串(尤其是非 UTF-8)
  • 单元格中的双引号

要求

PHP5.3.3 或更高版本

安装

创建或修改您的 composer.json

{
    "require": {
        "kzykhys/php-csv-parser": ">1.4"
    }
}

然后运行

$ php composer.phar install

用法

解析 CSV 文件

1,"some text",150
2,"some multi line
text",2000
<?php

require('./vendor/autoload.php');

$parser = \KzykHys\CsvParser\CsvParser::fromFile('./test.csv');
$result = $parser->parse();

var_dump($result);

这与

<?php

require('./vendor/autoload.php');

$iterator = new \SplFileObject('./test.csv');
$parser = new \KzykHys\CsvParser\CsvParser($iterator);
$result = $parser->parse();

var_dump($result);

从字符串解析

<?php

require('./vendor/autoload.php');

$parser = \KzykHys\CsvParser\CsvParser::fromString($string);
$result = $parser->parse();

var_dump($result);

从数组/迭代器解析

<?php

require('./vendor/autoload.php');

$parser = \KzykHys\CsvParser\CsvParser::fromArray(array('a,b,c,d', 'e,f,g,h'));
$result = $parser->parse();

$iterator = new ArrayIterator(array('a,b,c,d', 'e,f,g,h'));
$parser2 = new \KzykHys\CsvParser\CsvParser($iterator);
$result2 = $parser2->parse();

var_dump($result);
var_dump($result2);

处理大文件

\KzykHys\CsvParser\CsvParser 本身是 Traversable。因此您可以在运行时转换 CSV 行。

以下示例是性能的最佳选择

<?php

require('./vendor/autoload.php');

$parser = \KzykHys\CsvParser\CsvParser::fromFile('./test.csv');

foreach ($parser as $record) {
    // handles each record
    var_dump($record);
}

选项

您可以将选项传递给每个静态方法的第二个参数。

  • CsvParser::fromFile($file, $options);
  • CsvParser::fromString($string, $options);
  • CsvParser::fromArray($array, $options);
  • new CsvParser($iterator, $options);

可用的选项有

测试

只需运行 phpunit(需要 PHPUnit)

作者

Kazuyuki Hayashi (@kzykhys)

变更日志

查看 CHANGELOG

许可证

MIT 许可证