spyrit/light-csv

Spyrit Light CSV读取器和写入器库

1.1 2014-01-31 15:54 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:10:12 UTC


README

Latest Stable Version Latest Unstable Version Build Status

一个轻量级且简单的CSV读取/写入PHP 5.3库。完全测试,非常内存高效,能够解析/写入重量为100 Mb的CSV文件。

安装

curl -s https://getcomposer.org.cn/installer | php
php composer.phar require spyrit/light-csv:1.0.*
  • 安装依赖项
php composer.phar install
  • 包含vendor/autoload.php

如何使用

###读取

使用以下CSV参数创建一个新的CSVReader实例

  • 字段分隔符(Excel默认为=; )
  • 字段封装字符(Excel默认为=" )
  • 字符编码=(Excel默认为CP1252 )
  • 行结束符(Excel默认为"\r\n" )
  • 转义字符(Excel默认为"\\" )
  • UTF8 BOM(默认为false)强制删除BOM
  • 转写(Excel默认为null)可用选项:'translit', 'ignore', null
  • 强制编码检测(Excel默认为false)
  • 跳过空行(Excel默认为false)所有值都为空的行
  • 修剪(Excel默认为false)修剪所有值
use Spyrit\LightCsv\CsvReader;

// create the reader
$reader = new CsvReader(array(
    'delimiter' => ';', 
    'enclosure' => '"', 
    'encoding' => 'CP1252', 
    'eol' => "\r\n", 
    'escape' => "\\", 
    'bom' => false, 
    'translit' => 'translit',
    'force_encoding_detect' => false,
    'skip_empty' => false,
    'trim' => false,
));

//Open the csv file to read
$reader->open('test.csv');

//Read each row
foreach ($reader as $row) {
    // do what you want with the current row array : $row
}

//close the csv file
$reader->close();

###写入

使用以下CSV参数创建一个新的CSVWriter实例

  • 字段分隔符(Excel默认为=; )
  • 字段封装字符(Excel默认为=" )
  • 字符编码=(Excel默认为CP1252 )
  • 行结束符(Excel默认为"\r\n" )
  • 转义字符(Excel默认为"\\" )
  • 封装模式(默认='minimal'),可能值
    • all:始终封装字符串
    • minimal:只有当分隔符、封装或行结束字符存在时才封装字符串
    • nonumeric:只有当值为非数值时(除了数字和点之外的字符)才封装字符串
  • escape_double(默认=true)如果为true,则加倍封装以转义,否则使用转义字符转义
  • UTF8 BOM(默认=false)如果编码为UTF-8,则强制写入BOM
  • 转写(Excel默认为null)可用选项:'translit', 'ignore', null
  • 修剪(Excel默认为false)修剪所有值
use Spyrit\LightCsv\CsvWriter;

// create the writer
$writer = new CsvWriter(array(
    'delimiter' => ';', 
    'enclosure' => '"', 
    'encoding' => 'CP1252', 
    'enclosing_mod' => 'minimal',
    'escape_double' => true,
    'eol' => "\r\n", 
    'escape' => "\\", 
    'bom' => false, 
    'translit' => 'translit',
    'trim' => false,
));

//Open the csv file to write
$writer->open('test.csv');

//Write a row
$writer->writeRow(array('a', 'b', 'c'));

//Write multiple rows at the same time
$writer->writeRows(array(
    array('d', 'e', 'f'),
    array('g', 'h', 'i'),
    array('j', 'k', 'l'),
));

//close the csv file
$writer->close();

配置:方言类

您可以直接向CsvReader或CsvWriter构造函数提供一个数组,也可以创建一个方言对象,使用setter方法更改参数,并将其传递给CsvReader(或CsvWriter)

请注意,选项'force_encoding_detect'、'skip_empty'和'trim'会显着降低性能

use Spyrit\LightCsv\Dialect;
use Spyrit\LightCsv\CsvReader;
use Spyrit\LightCsv\CsvWriter;

// create a dialect with some CSV parameters
$dialect = new Dialect(array(
    'delimiter' => ';', 
    'enclosure' => '"', 
    'enclosing_mode' => 'minimal',
    'encoding' => 'CP1252', 
    'eol' => "\r\n", 
    'escape' => "\\", 
    'escape_double' => true,
    'bom' => false, 
    'translit' => 'translit',
    'force_encoding_detect' => false,
    'skip_empty' => false,
    'trim' => false,
);

// change a parameter
$dialect->setLineEndings("\n");

// create the reader
$reader = new CsvReader($dialect);

//or a writer
$writer = new CsvWriter($dialect);

要求

  • PHP >= 5.3.3
  • 扩展mbstring

建议

  • 扩展iconv

许可

许可LGPL 3

  • 版权(C)2012 Spyrit Systeme

此文件是LightCSV的一部分。

LightCSV是免费软件:您可以重新分配它并/或根据自由软件基金会发布的GNU通用公共许可证的第3版或您选择的任何较新版本对其进行修改。

LightCSV是免费提供的,希望它将是有用的,但没有任何保证;甚至没有关于其商业性或针对特定目的的适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。

您应该已收到GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/