<?php
setlocale(LC_ALL, 'ja_JP');
mb_language("ja");
mb_internal_encoding("utf-8");
mb_http_input("auto");
mb_http_output("SJIS");

class CSV
{
	var $fileName;
	var $dataall;
	/**
	 * コンストラクタ
	 */
    function CSV(){
		$this->__construct();
    }

	function __construct()
	{

	}

	/**
	 * csv_output CSVファイルの生成処理
	 * $title    　　　　ヘッダーデータ
	 * $data　　　　　データ・レコード
	 * $filename　ファイル名称
	 * $code　　　　文字コード
	 */
	function csv_output($title,$data,$code=null){
		//タイトルを取得する
		if (is_array($title)){
             $headdata=implode(',',$title)."\r\n";
         }
         //データを取得する
        $data_file = "";
		for ($j = 0; $j < count($data); $j++){
			$childBody =$data[$j];
			foreach($childBody as $key => $val){
				//半角カンマから全角カンマに変換
				$data_file = $data_file.str_replace(",", "，", $childBody[$key]).",";
			}
			$data_file = substr($data_file,0,strlen($data_file)-1);
			$data_file = $data_file . "\r\n";
		}
		$dataall = $headdata.$data_file;
		iconv('shift-JIS','UTF-8',$dataall);
		$filename = "Inquiry.csv";
		mb_convert_variables("SJIS","auto",$dataall,$filename);
		if(strstr($_SERVER['HTTP_USER_AGENT'],'Safari')){
			$filename = "Inquiry.csv";
		}
		header('Content-Type: text/tab-separated-values;charset=Shift-JIS');
		header("Content-Disposition: attachment; filename=".$filename);
		print $dataall;
		exit;
	}

	/**
	 * csv_output CSVファイルの生成処理(固定長)
	 * $title          ヘッダーデータ
	 *    array('0'=>タイトル名)
	 * $title_width    ヘッダーデータ
	 *    array('0'=>桁数)
	 * $data           データ・レコード
	 *    array('行数'=>array('項目名'=>'バリュー'))
	 * $data_width レコードの幅
	 *    array('項目名'=>桁数)
	 * $filename　ファイル名称
	 */
	function csv_out_length($title, $title_width, $data, $data_width, $filename , $total_record, $end_record){
		//タイトルを取得する
		$head_data = '';
		if (is_array($title) && $title != ''){
			for($i=0;$i<count($title);$i++){
				$str = $this->str_pad_sjis($title[$i],$title_width[$i],' ');
				$headdata = $headdata.$str;
			}
         }
         $head_data = $headdata."\r\n";

         //データを取得する
        $data_file = "";
		for ($j = 0; $j <= count($data)-1; $j++){
			$childBody = $data[$j];
			foreach($childBody as $key => $val){
				if($data_width[$key]){
					$str = $this->str_pad_sjis($val,$data_width[$key],' ');
					$data_file = $data_file.$str;
				}
			}
			$data_file = $data_file."\r\n";
		}
		//トレーラ・レコード
		$total_data = '';
		if(is_array($total_record) && $total_record != ''){
			for($i=0;$i<count($total_record[0]);$i++){
				$str = $this->str_pad_sjis($total_record[0][$i],$total_record[1][$i],' ');
				$total_data = $total_data.$str;
			}
			$total_data = $total_data."\r\n";
		}
		//エンド・レコード
		$end_data = '';
		if(is_array($end_record) && $end_record != ''){
			for($i=0;$i<count($end_record[0]);$i++){
				$str = $this->str_pad_sjis($end_record[0][$i],$end_record[1][$i],' ');
				$end_data = $end_data.$str;
			}
			$end_data = $end_data."\r\n";
		}

		$dataall = $head_data.$data_file.$total_data.$end_data;
		mb_convert_variables("SJIS","auto",$dataall);
		header("Content-Type: application/octet-stream");
		header("Content-Disposition: attachment; filename=".$filename.".csv");
		print $dataall;
	    exit;
	}

	/*
	 * UTF8の文字列をSJISでバイトを計算する
	 *
	 */
	function str_pad_sjis($str,$width,$repstr){
		$retString = $str;
		$sjisStr   = mb_convert_encoding($str,'SJIS');
		if (is_numeric($width) && $width > strlen($sjisStr)){
			for($i=0;$i<$width-strlen($sjisStr);$i++){
				$retString = $retString.$repstr;
			}
		}
		return $retString;
	}
}
?>