Tokenised Csv Reader that handles some of the strange configurations databases and application use.
- Parses tokens and csv from streams and outputs using a Lazy Iterator
Csv Feature | Example | Array |
---|---|---|
Delimiter | `thing | other` |
Quote Enclosure | "quote, here",not here |
['quote, here', 'not here'] |
Escaping | "\"text","new\\nline" |
['"text',"new\\\nline"] |
Double Quotes | """text","more" |
['"text','more'] |
Double Quotes and Escaping | """text","\, text" |
['"text',', text'] |
Null value parsing | "text",\\N,"text" |
['text',null,'text'] |
Boolean value parsing | "text",false,true |
['text',false,true] |
Numeric value parsing | "text",1,-2.3,3.1e-24 |
['text',1,-2.3,3.1e-24] |
Handling of Byte Order Marks | <UTF8BOM>"text","things" |
['text','things'] |
Via Composer
$ composer require graze/csv-token
$csvDefinition = new CsvDefinition();
$reader = new Reader($csvDefinition, $stream);
$iterator = $reader->read();
// $stream = '"some","text",true,false,0,1,2';
$csvDefiniton = new CsvDefinition();
$parser = new Parser([new BoolValueParser(), new NumberValueParser()]);
$tokeniser = new StreamTokeniser($csvDefinition, $stream);
$iterator = $parser->parser($tokeniser->getTokens());
var_dump(iterator_to_array($iterator));
-> [['some','text',true,false,0,1,2]]
Please see CHANGELOG for more information what has changed recently.
$ make test
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
- Harry Bragg
- All Contributors
- Original Idea: jfsimon/php-csv
The MIT License (MIT). Please see License File for more information.