The League of Extraordinary Packages

Our Packages:

Presented by The League of Extraordinary Packages

Getting Started

Connections Settings

Inserting Records

Selecting Records


Converting Records

Upgrading Guide



abstract class AbstractCsv implements ByteSequence
    public function __toString(): string
    public function addStreamFilter(string $filtername, mixed $params = null): self
    public function chunk(int $length): Generator
    public static function createFromFileObject(SplFileObject $obj): self
    public static function createFromPath(string $path, string $open_mode = 'r+', resource $context = null): self
    public static function createFromStream(resource $stream): self
    public static function createFromString(string $str): self
    public function hasStreamFilter(string $filtername): bool
    public function getContent(): string
    public function getDelimiter(): string
    public function getEnclosure(): string
    public function getEscape(): string
    public function getInputBOM(): string
    public function getOutputBOM(): string
    public function getStreamFilterMode(): int
    public function output(string $filename = null): int
    public function setDelimiter(string $delimiter): self
    public function setEnclosure(string $enclosure): self
    public function setEscape(string $escape): self
    public function setOutputBOM(): self
    public function supportsStreamFilter(): bool

Connection type

Accessing the CSV document is done using one of the following class:

Both classes extend the League\Csv\AbstractCsv class and as such share the following features:

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...


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');
} 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 requires 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->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