alexskrypnyk / csvtable
PHP class to work with CSV as a table and export it as Markdown.
Fund package maintenance!
Patreon
Installs: 3 590
Dependents: 3
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 1
Open Issues: 1
Requires
- php: >=8.1
Requires (Dev)
- drupal/coder: ^8.3
- phpmd/phpmd: ^2.15
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.1
- rector/rector: ^0.19.0
README
CsvTable
PHP class to work with CSV as a table and export it as Markdown.
Features
- Single-file class to manipulate CSV table.
- Renderers for CSV and text table.
- Ability to provide custom renderer.
Installation
composer require alexskrypnyk/csvtable
Usage
Given a CSV file with the following content:
col11,col12,col13
col21,col22,col23
col31,col32,col33
From string
$csv = file_get_contents($csv_file); // Render using the default renderer. print (new CsvTable($csv))->render();
will produce identical CSV content by default:
col11,col12,col13
col21,col22,col23
col31,col32,col33
From file
print (CsvTable::fromFile($file))->render();
will produce identical CSV content by default:
col11,col12,col13
col21,col22,col23
col31,col32,col33
Using CsvTable::renderTextTable()
renderer
print (CsvTable::fromFile($file))->render([CsvTable::class, 'renderTextTable']);
will produce table content:
col11|col12|col13
-----------------
col21|col22|col23
col31|col32|col33
Using CsvTable::renderTextTable()
renderer with disabled header
print (CsvTable::fromFile($file))->noHeader()->render([CsvTable::class, 'renderTextTable']);
will produce table content:
col11|col12|col13
col21|col22|col23
col31|col32|col33
Custom renderer from class
print (CsvTable::fromFile($file))->render(Markdown::class);
will produce Markdown content:
| col11 | col12 | col13 | |-------|-------|-------| | col21 | col22 | col23 | | col31 | col32 | col33 |
Custom renderer as a callback
print (CsvTable::fromFile($file))->render(function ($header, $rows, $options) { if (count($header) > 0) { $header = implode('|', $header); $header = $header . "\n" . str_repeat('-', strlen($header)) . "\n"; } else { $header = ''; } return $header . implode("\n", array_map(function ($row) { return implode('|', $row); }, $rows)); });
will produce CSV content:
col11|col12|col13
-----------------
col21|col22|col23
col31|col32|col33
Maintenance
composer install
composer lint
composer test
Repository created using https://getscaffold.dev/ project scaffold template