csv-validator ============= [![Build Status](https://ci.gitnet.fr/buildStatus/icon?job=Gitnet%2Fcsv-validator%2F3)](https://ci.gitnet.fr/job/Gitnet/job/csv-validator/job/3/) CSV validator library That uses the constraints of Symfony framework: [http://symfony.com/doc/current/reference/constraints.html](http://symfony.com/doc/current/reference/constraints.html). * [Installation](#installation) * [Example](#example) * [Contributors](#contributors) Installation ------------ You need [composer](https://getcomposer.org/): composer require deblan/csv-validator Example ------- ``` addFieldConstraint(0, new Email()); // The second field must contain a date $validator->addFieldConstraint(1, new Date()); // Validate the legend $validator->setExpectedHeaders(['foo', 'bar', 'bim']); // An line must contain 3 columns $validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) { if (count($data) !== 6) { // 6 because of the legend (3 fields * 2) $context->addViolation('The line must contain 3 columns'); } })); // Initialisation of the parser $parser = new CsvParser(); $parser->setHasHeaders(true); $validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv')); if ($validator->isValid() === false) { foreach ($validator->getErrors() as $error) { $line = $error->getLine(); $column = $error->getColumn(); $message = $error->getViolation()->getMessage(); echo <<
  • Line: $line
  • Column: $column
  • $message

  • EOF; } } ``` Run `example.php` and see results: ``` ``` Contributors ------------ * Simon Vieille * Gautier Deruette