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