PHP CSV writer & reader with settings of quoting enclosure and encoding
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:
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();
}