1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/* --------------------------------------------------------------------------
 *  ファイルシステムのCSV形式データ読み込み:関数(サブルーチン)
 *    === 作成:2011.6.13 yoshi ===
 *   ■利用側の指定方法(引数)
 *     ・第1引数:読み込むファイルのパス指定
 *     ・第2引数:出力アリア(配列)のリファレンス指定(参照渡し処理)
 *     ・第3引数:デリミタ文字コードの指定(省略時は、「,」)
 *     ・第4引数:コード変換指定(省略時は、変換なし)
 *                 ex,Shift_JISからUTF-8の変換は、「SJIS:UTF-8」と記述する
 *    例: fileGet_csv('data/abc.txt',$outdata,"\t",'SJIS:UTF-8');
 *    2013.05.16 修正:php5.3のsplitが非推奨でエラーが出るため、preg_splitに変更
 * --------------------------------------------------------------------------- */
function fileGet_csv($path,&$out_data,$delim null,$codecvt=null){
    
$fh fopen($path,"r") or die("指定したファイル:{$path} がオープンできません");
    
// 出力配列エリアのクリア
    
$out_data = array();
    
// デリミタの設定
    
if(!$delim){$delim ',';}
    
// コード変換の設定
    
$bf_code '';
    
$af_code '';
    if(
$codecvt){
        list(
$bf_code,$af_code) = preg_split("/\/|:|,/",$codecvt);
    }
    
// ファイルの1行ごとのテーブル作成
    
while (($data fgetcsv($fh,0,$delim)) !== FALSE) {
        
$item_out = array();
        
// 1件分の配列の繰り返し
        
for ($i=0;$i<count($data);$i++){
            if(
$af_code){
                
$item_out[$i] = mb_convert_encoding($data[$i],$af_code,$bf_code);
            } else {
                
$item_out[$i] = $data[$i];
            }
        }
        
// 1件分の配列を格納
        
array_push($out_data,$item_out);
    }
    
fclose($fh);
}
?>