<?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?>
|