PHP把数据导出替CVS格式的类
PHP把数据导出为CVS格式的类
///////////// //第一次调用类,给csv的路径 #$b=new CsvFieldDump("./sample.csv"); //余下的这些函数是可选的-这取决于你想要什么 #$b->dump_headers(); #$b->dump_column_by_name(array("Description", "Code")); #$b->dump_column_by_name("Code"); #$b->dump_column(array(1, 2, 3)); #$b->dump_column(3); class CsvFieldDump { var $headers; var $fieldnum; function CsvFieldDump($infile){ if(empty($infile)){ die("You must specify a csv file to read\n"); } if(!file_exists($infile)){ die("$infile doesn't exist!\n"); } $this->infile = $infile; $this->fieldnum = $field; $this->createFile=0; return(true); } var $headers=array(); function dump_headers($dumptoscreen=1){ $this->fd=fopen($this->infile, "r") or die("Couldn't open csv file $file"); $count=0; while($data = fgetcsv($this->fd, 1000, ",") ){ if(!$count){ if($dumptoscreen){ print_r($data); } $this->headers=$data; } $count=1; } return($this->headers); } function dump_column($num){ $this->fieldnum = $num; $this->fd=fopen($this->infile, "r") or die("Couldn't open csv file $file"); $count=0; while($data = fgetcsv($this->fd, 1000, ",")){ $array=array(); if(is_array($this->fieldnum)){ foreach($this->fieldnum as $num){ $array[]=$data[$num]; } }else{ $array = array($data[$this->fieldnum]); } $this->write_line($array); } } var $colname; var $headers_flip; function dump_column_by_name($name){ if(!isset($name)){ die("No field name specified"); } $this->colname=$name; $this->dump_headers(0); $this->headers_flip = array_flip($this->headers); if(is_array($this->colname)){ foreach($this->colname as $n){ $array[] = $this->headers_flip[$n]; } }else{ $array[] = $this->headers_flip[$this->colname]; } $this->dump_column($array); } function write_line($data){ $string=""; $num=count($data); for($x=0;$x<$num;$x++){ $string.=$data[$x]; if($x<$num-1){ $string.=","; } } echo $string."\n"; } } /////////////////////// make it think its a c program :) if(isset($argv[1])){ $filename = $argv[count($argv)-1]; if($argv[1] == "-h"){ render_help(); die(); }else{ $b=new CsvFieldDump($filename); } $x=0; foreach($argv as $opt){ switch($opt) { case "df": case "-df" : $number = $argv[$x+1]; if(strstr($number, ",")){ $numbers = explode(",",$number); }else{ $numbers = $number; } $b->dump_column($numbers); break; case "-dn": $number = $argv[$x+1]; if(strstr($number, ",")){ $names = explode(",",$number); }else{ $names = $number; } $b->dump_column_by_name($names); break; case "--help": case "-h" : render_help(); break; case "-dh" : $b->dump_headers(); break; } $x++; } } function render_help(){ echo "CsvFieldDump version 0.0.0.1 by mark fate_amendable_to_change@yahoo.com -df <n> = dumps field(s) number n - also (accepts comma delimited list for multiple field numbers eg: -df 1,2,3) -dn <N> = dumps field(s) named N (accepts comma delimited list for multiple names eg: -dn Code,Desc) -dh = dumps csv headers "; }