Overview
Connection type
Accessing the CSV document is done using one of the following classes:
League\Csv\Reader
to connect on a read only modeLeague\Csv\Writer
to connect on a write only mode
Both classes extend the League\Csv\AbstractCsv
class and as such share the following features:
- Loading CSV document
- Setting up the CSV controls characters
- Managing the BOM sequence
- Adding PHP stream filters
- Outputting the CSV document
OS specificity
If your CSV document was created or is read on a Macintosh computer, add the following lines before using the library to help PHP detect line ending in Mac OS X.
if (!ini_get('auto_detect_line_endings')) {
ini_set('auto_detect_line_endings', '1');
}
//the rest of the code continues here...
Exceptions
The default exception class thrown while using this library is League\Csv\Exception
which extends PHP Exception
class.
use League\Csv\Exception;
use League\Csv\Reader;
try {
$csv = Reader::createFromPath('/path/to/file.csv', 'r');
$csv->setDelimiter('toto');
} catch (Exception $e) {
echo $e->getMessage(), PHP_EOL;
}
When using a non-seekable SplFileObject
, a RuntimeException
is thrown instead of a League\Csv\Exception
when using features that require a seekable CSV document. In the following example a seekable CSV document is required to update the inserted newline.
use League\Csv\Exception;
use League\Csv\Writer;
try {
$csv = Writer::createFromFileObject(new SplFileObject('php://output', 'w'));
$csv->setNewline("\r\n");
$csv->insertOne(["foo", "bar"]);
} catch (Exception | RuntimeException $e) {
echo $e->getMessage(), PHP_EOL;
}
//in order to change the CSV document newline a seekable CSV document is required