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


20111221-01

php4からCSVを読み込むライブラリをご紹介。

今更php4ですか。。。と、思いますよね。。
私もそう思っていたんですが、受諾開発していると、意外と遭遇するんです^^;

CSV系のライブラリは検索すればすぐ見つかるかな、と思ったんですが、意外とライブラリ探しに時間がかかったのでブログでご紹介します。

このライブラリを使うとファイル名を指定したら配列で値を取得できるので、結構便利ですよ。
※ちなみに、php標準の関数であるfgetcsvでもOKという方は読み飛ばしてくださいませ。

使い方は以下

IT/WEB業界への転職なら求人サイトGreen

CSVReaderクラス

クラスはCodeigniterのWikiCSVReaderというクラスがありましのたで
それを使います。

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をパースするライブラリでした。

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

follow us in feedly