/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

CSVパーサ書いてみた

まぁ、なんとなくDB感覚でCSV使えたらいいなって(ぉ
PEAR::DB(古い)とかあるけど自作したほうが感覚的に好きなので。

開発機の設定が吹っ飛んだのでgithubに投げておきたいがまだできないので直接貼り付ける方法で勘弁。

<?php
class csv_parser{
	//class inside variables 
	private $pdt ;
	private $fhd ;
	//class inside functions
	public function __construct($data,$params){
	/*
		@params 
			=>1 wide category
				
			=>2 height category
				
			=>3	wide and height category
				
	*/
	

		switch($params){
			case 1:
				$this->pdt = $this->param1_parsing($data) ;
				break ;
				
			case 2:
				$this->pdt = $this->param2_parsing($data) ;
				break ;
				
			case 3:
				$this->pdt = $this->param3_parsing($data) ;
				break ;
				
			default:
			
				break ;
		}
	}
	

	public function return_data(){
		return $this->pdt ;
	}

	
	/*Private funtions*/
	private function csv_loader($data,$md){
		if($md == 1){
			return fopen($data,"r") ;
		}elseif($md == 2){
			fclose($data) ;
		}
	}
	
	private function param1_parsing($data){//縦型CSV DB構造型
		$fhd = $this->csv_loader($data,1) ;
		$keys = fgets($fhd,4096) ;

		$datas = array() ;
		
		$ars = $this->keys_inserts($keys) ;
		$i = 0 ;
		$j = 0 ;

		while(($data = fgets($fhd,4096)) !== false){//データ全行取る
			$splits = explode(",",$data) ;
			
			for($j=0;($keys = preg_replace("/(\r\n|\r|\n)/","",key($ars))) != false;$j++){//配列ポインタが終端に行くまで格納
				$datas[$keys][$i] = preg_replace("/(\r\n|\r|\n)/","",$splits[$j]) ;
				next($ars) ;
			}

			reset($ars) ;
			
			
			$i++ ;
		}
		$this->csv_loader($fhd,2) ;
		return $datas ;
	}

	private function param2_parsing($data){
		//ファイル開く
		$fhd = $this->csv_loader($data,1) ;
		$datas = array() ;
		$j = 0 ;
		while(($data = fgets($fhd,4096)) !== false){//データ全行取る
			$splits = explode(",",$data) ;
			//print_r($splits) ;

			for($i=1;$i<sizeof($splits);$i++){
				$datas[$splits[0]][$i] = preg_replace("/(\r\n|\r|\n)/","",$splits[$i]) ;
			}
			$i++ ;
			
		}
		
		//ファイル閉める
		$this->csv_loader($fhd,2) ;
		return $datas ;
	}

	private function param3_parsing($data){
		
	}
	
	private function keys_inserts($keys){
		
		$keys = explode(",",$keys) ;
		
		
		foreach($keys as $key){
			$dats[$key] = "" ;
		}
		
		//print_r($keys) ;
		
		return $dats ;
	}
	

}
?>