yidas/csv

PHP CSV writer & reader with settings of quoting enclosure and encoding

1.0.0 2021-09-06 11:01 UTC

This package is auto-updated.

Last update: 2024-11-06 18:13:36 UTC


README

PHP CSV


PHP CSV writer & reader with settings of quoting enclosure and encoding

Latest Stable Version License

Features

  • Support generating Double Quotes enclosure for all entities setting

  • Support Encoding setting for local dialect

  • Elegent Interface for setup and use

OUTLINE

DEMONSTRATION

Quickstart with specifying the file name directly:

// Read the CSV file
$csvReader = new yidas\csv\Reader('/tmp/file.csv');
$rows = $csvReader->readRows();
$csvReader->fclose();
// Write the CSV file
$csvWriter = new yidas\csv\Writer('/tmp/file.csv'); 
$csvWriter->writeRows($rows);
$csvWriter->fclose();

Write to CSV

Open a file and use libray to write in CSV format:

$fp = fopen("/tmp/file.csv", 'w');

$csvWriter = new yidas\csv\Writer($fp, [
    // 'quoteAll' => true,
    // 'encoding' => 'UTF-8'
]); 
$csvWriter->writeRow(["First", 'Second']);
$csvWriter->writeRows([
    ["Normal", 'Double"Quote'], 
    ["It's a context,\nNew line.", 'Encoded中文'],
]);

fclose($fp);

The content of generated CSV file will be:

"First","Second"
"Normal","Double""Quote"
"It's a context,
New line.","Encoded中文"

In default setting, it will always add double quotes with UTF-8 encoding.

Read from CSV

Open a CSV file with local encoding (Big5) and use libray to read with UTF-8 encoding:

$fp = fopen("/tmp/file.csv", 'r');

$csvReader = new yidas\csv\Reader($fp, [
    'encoding' => 'Big5'
]); 
$firstRow = $csvReader->readRow();
$remainingRows = $csvReader->readRows();

fclose($fp);

REQUIREMENTS

This library requires the following:

  • PHP CLI 5.4.0+

INSTALLATION

Run Composer in your project:

composer require yidas/csv

Then you could use the class after Composer is loaded on your PHP project:

require __DIR__ . '/vendor/autoload.php';

use yidas\csv\Writer;
use yidas\csv\Reader;

USAGE

Options

The options in parameter 2 for Writer/Reader class are as below:

quoteAll

Controls when quotes should be always generated by the writer.

Encoding

Controls which the encoding should be generated by the writer/reader.

By defaule, Microsoft Excel will open CSV file with local encoding. For example: Excel in Chinese(Traditional) Windows will open CSV with Big5 encoding.

Writer

$csvWriter = new yidas\csv\Writer($fp, [
    // 'quoteAll' => true,
    // 'encoding' => 'UTF-8'
]); 

writeRow()

Write the row parameter to the writer’s file stream, formatted according to the current setting.

public static array writeRow(array $rowData)

writeRows()

Write the rows parameter to the writer’s file stream, formatted according to the current setting.

public static array writeRows(array $rowsData)

Reader

$csvReader = new yidas\csv\Reader($fp, [
    // 'encoding' => 'UTF-8'
]); 

readRow()

Read a row from current file pointer.

public static array readRow()

Example:

while ( ($row = $csvReader->readRow($file) ) !== FALSE ) {
    var_dump($row);
}

readRows()

Read all the rows from current file pointer.

public static array readRows()

Example:

$rows = $csvReader->readRows();
var_dump($rows);

Exceptions

try {

    $csvWriter = new yidas\csv\Writer($fp, [
        // 'quoteAll' => true,
        // 'encoding' => 'UTF-8'
    ]); 
    $csvWriter->writeRow(["First", 'Second']);
    
} catch (\Exception $e) {

    echo 'Code:' . $e->getCode() . ' Message:' . $e->getMessage();
}

REFERENCES