tiisy / csv
Easy CSV file handling. Read CSV files from string, file, resource or URL.
v0.3.0
2023-08-31 07:27 UTC
Requires
- php: >=8.0
Requires (Dev)
- jangregor/phpstan-prophecy: ^0.8.1
- phpspec/prophecy: ^1.14
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^0.12.99
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
README
Tiisy CSV provides a simple way to handle CSV files.
Advantages
- Can treat CSV files as associative arrays using header row logic (
useHeaderRow: true
) - Uses PHP's native
fgetcsv
andfputcsv
- No dependencies
- Framework-agnostic
- KISS, keep it simple and stupid (easy maintenance and contributing)
- Well tested
Installation
Using Composer:
composer require tiisy/csv
Usage
Example:
<?php use Tiisy\Csv\CsvFile; foreach(CsvFile::createFromString("id,name\n1,foo\n2,bar") as $row => $data) { echo $data['id'] . ': ' . $data['name'] . PHP_EOL; } // will output: // 1: foo // 2: bar
Create instance of CsvFile
Example:
<?php use Tiisy\Csv\CsvFile; foreach(CsvFile::createFromFile('example.csv', useHeaderRow: false) as $data) { echo $data[0] . ': ' . $data[1]; }
Ways to create an instance of CsvFile
:
create(<options>)
– Creates an empty CSV filecreateFromArray(array $data)
– Creates an CSV file with given datacreateFromFile(string $filename, <options>)
– Loads CSV file by given filecreateFromResource(resource $handle, <options>)
– Loads CSV file by given resourcecreateFromString(string $input, <options>)
– Loads CSV file by given stringcreateFromUrl(string $url, <options>)
– Loads CSV file by given URLcreateFromGoogleSpreadsheetId(string $spreadsheetId, <options>)
– Loads CSV file by given Google Spreadsheet ID
Optional options for creating an instance of CsvFile
:
useHeaderRow
(default:true
) Uses first row as keys for following rowsseparator
(default:,
) Sets the field separator (one single-byte character only)enclosure
(default:"
) Sets the field enclosure character (one single-byte character only)escape
(default:\
) Sets the escape character (one single-byte character)
Modifying CSV
<?php use Tiisy\Csv\CsvFile; $csvFile = CsvFile::createFromArray([ ['id' => '1', 'name' => 'Nina'], ['id' => '2', 'name' => 'Angela'], ]); $csvFile->add(['id' => '3', 'name' => 'John']); // You can save your modified CSV file this way: $csvFile->saveAs('names.csv');