PHP CSV writer & reader with settings of quoting enclosure and encoding
-
Support generating Double Quotes enclosure for all entities setting
-
Support Encoding setting for local dialect
-
Elegent Interface for setup and use
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();
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.
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);
This library requires the following:
- PHP CLI 5.4.0+
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;
The options in parameter 2 for Writer/Reader class are as below:
Controls when quotes should be always generated by the writer.
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.
$csvWriter = new yidas\csv\Writer($fp, [
// 'quoteAll' => true,
// 'encoding' => 'UTF-8'
]);
Write the row parameter to the writer’s file stream, formatted according to the current setting.
public static array writeRow(array $rowData)
Write the rows parameter to the writer’s file stream, formatted according to the current setting.
public static array writeRows(array $rowsData)
$csvReader = new yidas\csv\Reader($fp, [
// 'encoding' => 'UTF-8'
]);
Read a row from current file pointer.
public static array readRow()
Example:
while ( ($row = $csvReader->readRow($file) ) !== FALSE ) {
var_dump($row);
}
Read all the rows from current file pointer.
public static array readRows()
Example:
$rows = $csvReader->readRows();
var_dump($rows);
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();
}