PHP class to work with CSV as a table and export it as Markdown.
- Single-file class to manipulate CSV table.
- Renderers for CSV and text table.
- Ability to provide custom renderer.
composer require alexskrypnyk/csvtable
Given a CSV file with the following content:
col11,col12,col13
col21,col22,col23
col31,col32,col33
$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
print (CsvTable::fromFile($file))->render();
will produce identical CSV content by default:
col11,col12,col13
col21,col22,col23
col31,col32,col33
print (CsvTable::fromFile($file))->render([CsvTable::class, 'renderTextTable']);
will produce table content:
col11|col12|col13
-----------------
col21|col22|col23
col31|col32|col33
print (CsvTable::fromFile($file))->noHeader()->render([CsvTable::class, 'renderTextTable']);
will produce table content:
col11|col12|col13
col21|col22|col23
col31|col32|col33
print (CsvTable::fromFile($file))->render(Markdown::class);
will produce Markdown content:
| col11 | col12 | col13 |
|-------|-------|-------|
| col21 | col22 | col23 |
| col31 | col32 | col33 |
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
composer install
composer lint
composer test
Repository created using https://getscaffold.dev/ project scaffold template