Tiisy CSV provides a simple way to handle CSV files.
- 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
Using Composer:
composer require tiisy/csv
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
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)
<?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');