PHP4でCSVをパースするライブラリ

php4からCSVを読み込むライブラリをご紹介。
今更php4ですか。。。と、思いますよね。。
私もそう思っていたんですが、受諾開発していると、意外と遭遇するんです^^;
CSV系のライブラリは検索すればすぐ見つかるかな、と思ったんですが、意外とライブラリ探しに時間がかかったのでブログでご紹介します。
このライブラリを使うとファイル名を指定したら配列で値を取得できるので、結構便利ですよ。
※ちなみに、php標準の関数であるfgetcsvでもOKという方は読み飛ばしてくださいませ。
使い方は以下
CSVReaderクラス
クラスはCodeigniterのWikiにCSVReaderというクラスがありましのたで
それを使います。
class CSVReader {
var $fields; /** columns names retrieved after parsing */
var $separator = ';'; /** separator used to explode each line */
var $enclosure = '"'; /** enclosure used to decorate each field */
var $max_row_size = 4096; /** maximum row size to be used for decoding */
/**
* Parse a file containing CSV formatted data.
*
* @access public
* @param string
* @param boolean
* @return array
*/
function parse_file($p_Filepath, $p_NamedFields = true) {
$content = false;
$file = fopen($p_Filepath, 'r');
if($p_NamedFields) {
$this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
}
while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) {
if( $row[0] != null ) { // skip empty lines
if( !$content ) {
$content = array();
}
if( $p_NamedFields ) {
$items = array();
// I prefer to fill the array with values of defined fields
foreach( $this->fields as $id => $field ) {
if( isset($row[$id]) ) {
$items[$field] = $row[$id];
}
}
$content[] = $items;
} else {
$content[] = $row;
}
}
}
fclose($file);
return $content;
}
}
使い方
使い方はこんな感じです。
■CSVファイル
name,address,tel Aさん,東京都,03-0000-0000 Bさん,千葉県,047-000-000 Cさん,札幌市,011-000-0000
■コード
$csv = new CSVReader();
$csv->separator = ','; //区切り文字を指定
$data = $csv->parse_file('./hoge.csv'); //ファイル名を指定
var_dump($data);
■出力
array(3) {
[0]=>
array(3) {
["name"]=>
string(5) "Aさん"
["address"]=>
string(6) "東京都"
["tel"]=>
string(12) "03-0000-0000"
}
[1]=>
array(3) {
["name"]=>
string(5) "Bさん"
["address"]=>
string(6) "千葉県"
["tel"]=>
string(11) "047-000-000"
}
[2]=>
array(3) {
["name"]=>
string(5) "Cさん"
["address"]=>
string(6) "札幌市"
["tel"]=>
string(12) "011-000-0000"
}
}
1行目をキーにして、配列に変換してくれました。
便利ですね〜。
作者の方には感謝です。
という事でPHP4でCSVをパースするライブラリでした。
最新情報をお届けします
