| 
<?php
 // PHP Class for convert HTML2CSV HTML2SQL SQL2CSV UTF-8 to ASCII
 // License BSD (without greetings) by Tomasz Malewski , Poland / Warsaw built 20090104
 class adv_csv
 {
 
 function adv_utf8_to_ascii($input)    // convert string from utf8 to ascii format
 {
 //    $output=preg_replace('/[^(\x20-\x7F)]*/','', $input);    //    sloooow
 $output=preg_replace ("/[^[:print:]]/",'',$input);    // remove everything not ASCII ex. UTF8 blank
 return ($output);
 }    // utf8_to_ascii
 
 function adv_html_to_csv($input)    // convert html string to CSV format html2csv
 {
 $output=preg_replace ("/^(.*)\<table(.*?)\>|\<\/table\>(.*)$|\<tr(.*?)\>|\<td(.*?)\>|\"|\'/si",'',$input);
 $output2=explode ("</tr>",$output);    // cut one line string to array for each line
 $output='';
 $this->csv_lines='0';
 foreach ($output2 as $output3)
 {
 $output4=explode ("</td>",$output3);    // cut each line for next array (cell)
 foreach ($output4 as $output5)
 {
 $output.= "\"".$output5."\",";
 }    // output 5
 $output=substr_replace($output,"",-1);    // replace last charcater "," in EOL
 $output.= "\r\n";
 $this->csv_lines++;
 }    // output3
 return ($output);
 }    // html_to_csv
 
 function adv_read_file($filename)    // read static file and push to string
 {
 $file=fopen ($filename,r);
 $this->string=fread ($file,filesize($filename));
 //    $this->string=fread ($file,18000);
 fclose ($file);
 }    // adv_read_file
 
 function adv_csv_headers()    // get column name from CVS string and create array
 {
 $output=explode("\r\n",$this->string);
 $output=explode(",",$output[0]);
 $this->csv_head='';
 $this->csv_head_count='';
 foreach ($output as $output2)
 {
 $output2=preg_replace ("/\"/",'',$output2);
 $this->csv_head_name[]=$output2;
 $this->csv_head_count++;
 }    // output2
 }    // adv_csv_headers
 
 function adv_csv_cols_length()    // estimate column length
 {
 $output=explode("\r\n",$this->string);
 unset ($output[0]);    // remove header row because we want to measure data length not header
 for ($i=0;$i<=$this->csv_head_count;$i++)
 {
 $this->csv_head_len[$i]='0';        // add element to array when 0 length
 }    // for i
 foreach ($output as $output2)
 {
 $output3=explode(",",$output2);
 foreach ($output3 as $key=>$output4)
 {
 if (strlen($output4)-2>$this->csv_head_len[$key])    // remove 2 because ""
 {
 $this->csv_head_len[$key]=strlen($output4)-2;    // remove 2 because ""
 //            echo $key.' '.$this->csv_head_len[$key].'-'.$output4.'<br>';
 }    // if strlen output4
 }    // output3
 }    // output 2
 }    // adv_csv_cols_length
 
 function adv_sql_connect($sql_host,$sql_user,$sql_password,$sql_database)
 {
 $db = mysql_connect($sql_host, $sql_user, $sql_password) or die("Could not connect.");
 if(!$db)
 die("no db");
 if(!mysql_select_db($sql_database,$db))     die("No database selected.");
 }    // adv_sql_connect
 
 function adv_sql_create($table,$mode)    // create table in MySQL after connect according to cvs_head_name & *len
 // mode create column name 0,1,2,3... mode=1 real names
 {
 $sql="CREATE TABLE `$table` ( \r\n `id` int(10) NOT NULL auto_increment,\r\n";
 for ($i=0;$i<=$this->csv_head_count;$i++)
 {
 //        echo $this->csv_head_len[$i]." ".$this->csv_head_name[$i]."<br>";
 if ($mode==1)
 {
 if (strlen($this->csv_head_name[$i])<1)    // to avoid bugs overwrite some colname with integer
 {
 $sql.="`$i";    // force number than assoc name cause by bugs
 }
 else
 {
 $sql.="`".$this->csv_head_name[$i];
 }    // else strlen head_name i
 }    // mode
 else
 {
 $sql.="`$i";
 }    // mode else
 if (strlen($this->csv_head_name[$i])<1) {$this->csv_head_name[$i]=$i;}    // safety column name with integer as name
 $sql.="` char(".$this->csv_head_len[$i].") default NULL,\r\n";
 }    // for i
 $sql.="PRIMARY KEY (`id`) \r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;";
 echo $sql;    // debug query
 mysql_query($sql)  or $this->mysql_error=mysql_error();
 }    // adV_sql_create
 
 function adv_sql_drop($table)        // remove table from database be CAREFULL !!!
 {
 mysql_query("DROP TABLE `$table`")  or $this->mysql_error=mysql_error();
 }    // drop table
 
 function adv_sql_insert($table,$mode)    // insert CSV data to SQL
 // mode=0 for cols 0,1,2,3.... mode=1 for real names
 {
 $output=explode ("\r\n",$this->string);
 unset ($output[0]);    // remove head row
 foreach ($output as $output)
 {
 $sql="INSERT INTO `$table` (";
 for ($i=0;$i<$this->csv_head_count;$i++)
 {
 if ($mode==1)
 {
 $sql.="`".$this->csv_head_name[$i]."`,";
 }    // mode
 else
 {
 $sql.="`$i`,";
 }    // mode else
 }    // for i
 $sql=substr_replace($sql,"",-1);    // replace last charcater "," in EOL
 $sql.=") VALUES (";
 $output2=explode (",",$output);
 foreach ($output2 as $key=>$output2)
 {
 //            echo "$key=$output2 ";        // debug
 $sql.=$output2.",";
 }     // foreach output2
 $sql=substr_replace($sql,"",-1);    // replace last charcater "," in EOL
 $sql.=");";
 mysql_query($sql)  or $this->mysql_error=mysql_error();
 //        echo $sql."<br>";
 }    // foreach output
 }    // adV_sql_insert
 
 function adv_sql_to_csv($table)
 {
 $sql1=mysql_query("select * from `$table` ") or $this->mysql_error=mysql_error();
 $i=0;
 while($sql2 = mysql_fetch_assoc($sql1))
 {    // create head row
 foreach ($sql2 as $key=>$sql3)
 {
 if ($i==0)
 {
 $sql.="\"".$i.'",';
 }    // $i
 else
 {
 $sql.="\"".$sql3.'",';
 }    // else $i
 } // foreach $sql2=>3
 $i++;
 $sql=substr_replace($sql,"",-1);    // replace last charcater "," in EOL
 $sql.="\r\n";
 }    // sql2
 $this->string=$sql;
 }    // adv_sql_to_csv
 
 }    // class adv_csv
 
 
 php?>
 |