Download the PHP package volcanus/csv without Composer
On this page you can find all versions of the php package volcanus/csv. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package csv
Short Description Utilities for reading and writing CSV
License MIT
Homepage https://github.com/k-holy/volcanus-csv
Informations about the package csv
Volcanus_Csv
CSV形式ファイルの入出力処理を簡潔に行うためのPHPクラスライブラリです。 出力時に利用できる Volcanus\Csv\Writer および、入力時に利用できる Volcanus\Csv\Reader によって構成されています。
特に、データベースから取得したデータのCSV形式でのエクスポートや、CSV形式ファイルからのデータベースへのインポートにおいて、簡潔かつ柔軟に対応できることを目標として作成しました。
読み込みのみであれば k-holy/volcanus-csv-parser の方が使いやすいかもしれません。
対応環境
- PHP 5.3以降
- mbstring拡張
依存ライブラリ
1.1.0よりConfigurationクラスを同梱のものに置き換えましたので、依存ライブラリはありません。
Volcanus\Csv\Writer
特徴
- 区切り文字、囲み文字、エスケープ文字に任意の1文字を指定できます。
- データの入力エンコーディングおよびCSVの出力エンコーディングを指定することで、自動でエンコーディング変換されます。
- SplFileObjectへの出力を前提としており、 組み込みプロトコル/ラッパーによる一時データのメモリへの出力に対応しています。php:// - Manual
- 入力データとして配列または Traversable 実装オブジェクトを指定することで、逐次出力を行えます。
- CSVのフィールド設定に無名関数を指定することで、連想配列および ArrayAccess 実装オブジェクトから任意の要素を加工したフィールドを出力できます。
- 必要であれば、生成したCSVの内容に合わせたレスポンスヘッダ(Content-Type, Content-Disposition, Content-Length)を出力できます。(ダウンロード時のファイル名も指定できます)
使い方
注意点
SplFileObjectを前提としていますが、CSVの加工は独自の処理を行なっています。 そのため、Volcanus\Csv\Writer で出力する場合、SplFileObject::setCsvControl() で設定した値は利用されません。
Volcanus\Csv\Reader
特徴
- 区切り文字、囲み文字、エスケープ文字に任意の1文字を指定できます。
- もちろん、囲み文字による改行を含むフィールドにも対応しています。
- CSVの入力エンコーディングおよびデータの出力エンコーディングを指定することで、自動でエンコーディング変換されます。
- SplFileObjectからの入力を前提としており、ファイルシステムの他にも様々な組み込みプロトコル/ラッパーが利用できます。サポートするプロトコル/ラッパー - Manual
- フィルタとして無名関数を指定することで、1レコード分のCSVをフェッチする際に任意の処理を実行できます。任意のオブジェクトへの変換、バリデーション、データベースへの保存などです。
- 一括読み込み時に、読み込んだCSVレコードの件数と、取得したCSVレコードの件数をそれぞれ参照することができます。これを利用して、フィルタの無名関数において「1件目のデータはヘッダ行とみなして無視」「何件目のデータでエラーが発生したかを通知」といったことが可能です。
使い方
注意点
SplFileObjectを前提としていますが、CSVの加工は独自の処理を行なっています。 そのため、Volcanus\Csv\Reader でファイルを解析する場合、SplFileObject::setCsvControl() で設定した値は利用されません。 また、fgetcsv() , SplFileObject::fgetcsv() , str_getcsv() といった標準の関数とは異なる結果を返す可能性があります。
セキュリティのため、復帰・改行・水平タブ・スペース以外の制御コードを自動で削除します。 そのため(ないとは思いますが)、バイナリデータには対応していません。
その他の情報
- FileMakerのCSVは、フィールド内の改行コードが垂直タブに変換されるという独自仕様です。特に対応策は施していませんが、フィルタ系の機能で str_replace("\x0b", "\r\n", $value) のように変換すれば一応対応できるはずです。
- str_getcsv()の第4引数(エスケープ文字)の正常動作を確認でき次第、そちらによる解析をデフォルト設定にするかも。