mmerian / csv
一个用于轻松读取和写入CSV文件的库
1.0.10
2016-03-15 08:50 UTC
Requires
- php: >= 5.3.0
- ext-mbstring: *
README
此库旨在帮助您读取和写入csv文件。
用法
读取CSV文件
假设你有一个看起来像这样的CSV文件
first_name;last_name;gender;birthdate
John;Smith;M;1972-05-12
Susan;Chatman;F;1972-05-12
实例化读取器非常简单
use Csv\Reader; $reader = new Reader($file, array( 'hasHeader' => true, 'inputEncoding' => 'ISO-8859-15', 'outputEncoding' => 'UTF-8', 'delimiter' => ';' )); foreach ($reader as $line) { /* * $line is an array. * If the CSV file has an header, * the array keys are the header fields */ echo $line['first_name']; } // Or while ($line = $reader->fetch()) { // Process line }
在这个例子中,$file 可以是现有文件的路径,或指向已打开文件的指针。可用选项包括
'hasHeader':一个布尔值,用于确定CSV文件的第一行是否是包含字段名称的标题行'header':如果CSV文件没有标题,您可以在其中提供。如果同时提供了'header'和'hasHeader',则'header'选项优先'inputEncoding':CSV文件的编码。默认为UTF-8'outputEncoding':读取文件时返回的数据的编码。如果'inputEncoding'和'outputEncoding'不同,则读取器会自动使用mbstring进行转换'delimiter':CSV分隔符'enclosure':CSV封装符'ignoreEmptyLines':如果设置为true(默认值),则读取器会静默地忽略空行。否则,如果遇到空行,将引发异常
自动字段处理
读取器还可以将格式化函数应用到您的CSV字段上。
use Csv\Reader; $reader = new Reader($file, array( 'hasHeader' => true, 'inputEncoding' => 'ISO-8859-15', 'outputEncoding' => 'UTF-8', 'delimiter' => ';' )); $reader->registerFormatter('birthdate', function($date) { return preg_replace('/^([0-9]+)-([0-9]+)-([0-9]+)$/', '$3/$2/$1', $date); }); foreach ($reader as $line) { echo $line['birthdate']; // will echo 12/05/1972 for the first line }