phpexperts / csv-speaker
一个快速简单的包,可以轻松地从字符串和数组中读取和写入CSV。
v1.4.0
2024-08-23 13:30 UTC
Requires
- php: >=7.4
- ext-spl: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- phpstan/phpstan: *
- phpunit/phpunit: 7.*|8.*|9.*
- symfony/var-dumper: ^4.2
README
CSVSpeaker是PHP Experts, Inc.的一个项目,旨在轻松地将CSV转换为数组,反之亦然。
该库的主要目标是使从CSV字符串获取数组变得极其简单,反之亦然。
特别说明:该项目已更新以支持废弃fgetcsv
和fputcsv
的$enclosure
参数。
有关详细信息,请参阅CSV和PHP 8.4+。
安装
通过Composer
composer require phpexperts/csv-speaker
使用方法
读取
实例化/加载
// The CSVReader can be instantiated from a file via just the file's filename: $csvReader = CSVReader::fromFile('/tmp/my.csv'); // or via a SplFileObject: $csvReader = CSVReader::fromFile(new SplFileObject('/tmp/my.csv')); // More simply, you can instantiate from any CSV string. $csvReader = CSVReader::fromString('a,b,c,d');
转换为数组
$output = $csvReader->toArray(); /* [ ['a', 'b', 'c', 'd'] ] */
默认情况下,第一行成为数组键
$csv = <<<CSV "First Name","Last Name",Age "John","Galt",37 CSV; $output = CSVReader::fromString($csv)->toArray(); /* [ ['First Name' => 'John', 'Last Name' => 'Galt', 'Age' => 37] ] */
您也可以关闭标题
$csv = <<<CSV "First Name","Last Name",Age "John","Galt",37 CSV; $output = CSVReader::fromString($csv, false)->toArray(); /* [ ['First Name', 'Last Name', 'Age'], ['John', 'Galt', '37'] ] */
写入
数值数组
$input = [ ['a', 'b', 'c'], ['d', 'e', 'f'] ]; $csvWriter = new CSVWriter(); $csvWriter->addRow($input[0]); $csvWriter->addRow($input[1]); $csv = $csvWriter->getCSV(); /* csv: a,b,c d,e,f */
键数组(哈希表)
$input = [ ['Name' => 'John Galt', 'Age' => 37], ['Name' => 'Mary Jane', 'Age' => 27], ]; $csvWriter = new CSVWriter(); $csvWriter->addRow($input[0]); $csvWriter->addRow($input[1]); $csv = $csvWriter->getCSV(); /* csv: Name,Age "John Galt",37 "Mary Jane",27 */
用例
PHPExperts\CSVSpeaker\CSVReader
✔ 将CSV字符串转换为数组
✔ 将CSV文件输出为数组
✔ 默认情况下使用第一行作为数组键
✔ 可以通过文件名加载
✔ 当给定的文件类型无效时抛出异常
✔ 如果输入不是正确的CSV,则返回空数组
PHPExperts\CSVSpeaker\CSVWriter
✔ 将简单数组转换为CSV
✔ 可以将行追加到现有CSV中
✔ 将键设置为标题行
✔ 可以添加具有相同标题的多行
✔ 将优雅地忽略空数组
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
测试
phpunit
贡献者
Theodore R. Smith theodore@phpexperts.pro
GPG指纹:4BF8 2613 1C34 87AC D28F 2AD8 EB24 A91D D612 5690
首席执行官:PHP Experts, Inc.
许可证
MIT许可证。有关更多信息,请参阅许可证文件。