LeagueCSV

Versions

Force field enclosure

This class is deprecated as of version 9.10.0. Please use the Writer::forceEnclosure method instead.

Available since version 9.1.0

The EncloseField is a PHP stream filter which forces the Writer class to enclose all its record fields.

Changing the CSV objects control characters after registering the stream filter may result in unexpected returned records.

Deprecated since version 9.10.0. You should instead use the Writer::forceEnclosure method for better results and improved DX. Please refer to its documentation for more informations.

Usage with Writer objects

public static EncloseField::addTo(Writer $csv, string $sequence): Writer

The EncloseField::addTo method will:

use League\Csv\EncloseField;
use League\Csv\Writer;

$writer = Writer::createFromPath('php://temp');
EncloseField::addTo($writer, "\t\x1f"); //adding the stream filter to force enclosure
$writer->insertAll($iterable_data);
$writer->output('mycsvfile.csv'); //outputting a CSV Document with all its fields enclosed

The $sequence argument should be a sequence containing at least one character that forces fputcsv to enclose the field value. If not, an InvalidArgumentException exception will be thrown.

Usage with PHP stream resources

public static EncloseField::register(): void
public static EncloseField::getFiltername(): string

To use this stream filter outside League\Csv objects you need to:

use League\Csv\EncloseField;

EncloseField::register();

$sequence = "\t\x1f";

$resource = fopen('/path/to/my/file', 'r+');
$filter = stream_filter_append($resource, EncloseField::getFiltername(), STREAM_FILTER_WRITE, [
    'sequence' => $sequence,
]);

$record = array_map(function ($value) use ($sequence) {
    return $sequence.$value;
}, $record);

fputcsv($resource, $record);