arielcr / php-csv-parser
将 CSV 转换为数组(完全支持 Excel 样式!)
2.0
2022-10-19 01:11 UTC
Requires
- php: ^7.1 | ^8.0
Requires (Dev)
- phpunit/phpunit: >=5.5
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