2017-06-05 135 views
0

我试图从mysql数据库下载数据。数据库中的一个字段包含HTML标签。如何下载包含HTML标签的csv文件

当我尝试在excel中打开下载的csv文件时,由于制表和HTML标记,它会出错。有没有办法在Excel中正确打开它?

我的PHP脚本:

<?php 
/*******EDIT LINES 3-8*******/ 
$DB_Server = "localhost"; //MySQL Server  
$DB_Username = "root"; //MySQL Username  
$DB_Password = "";    //MySQL Password  
$DB_DBName = "ud-for-downloading-items";   //MySQL Database Name 
$DB_TBLName = "oc_product_description"; //MySQL Table Name 
$filename = "oc_product_description";   //File Name 
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/  
//create MySQL connection 
$sql = "Select * from $DB_TBLName"; 
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());  
$file_ending = "csv"; 
//header info for browser 
header('Content-Encoding: UTF-8'); 
header('Content-type: text/csv; charset=UTF-8'); 
header("Content-Disposition: attachment; filename=$filename.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo "\xEF\xBB\xBF"; // UTF-8 BOM 

/*******Start of Formatting for Excel*******/ 
//define separator (defines columns in excel & tabs in word) 
$sep = "\t"; //tabbed character 
//start of printing column names as names of MySQL fields 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
echo mysql_field_name($result,$i) . "\t"; 
} 
print("\n");  
//end of printing column names 
//start while loop to get data 
    while($row = mysql_fetch_row($result)) 
    { 
     $schema_insert = ""; 
     for($j=0; $j<mysql_num_fields($result);$j++) 
     { 
      if(!isset($row[$j])) 
       $schema_insert .= "NULL".$sep; 
      elseif ($row[$j] != "") 
       $schema_insert .= "$row[$j]".$sep; 
      else 
       $schema_insert .= "".$sep; 
     } 
     $schema_insert = str_replace($sep."$", "", $schema_insert); 
     $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
     $schema_insert .= "\t"; 
     print(trim($schema_insert)); 
     print "\n"; 
    } 
?> 

UPDATE:添加的图像

data in csv how excel parse it

+1

每次使用[mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql - 功能在PHP) 数据库扩展在新的代码 ** [这种情况](https://media.giphy.com/media/kg9t6wEQKV7u8/giphy.gif)** 它被弃用,并已多年并在PHP7中永远消失。 如果你刚开始学习PHP,花你的精力学习'PDO'或'mysqli'数据库扩展和准备的语句。 [从这里开始](http://php.net/manual/en/book.pdo.php) – RiggsFolly

+1

请解释“它工作错了”。另外,添加输出的屏幕截图可帮助我们更好地帮助您。 – Kishor

+0

你可能想看看一个叫[PHPExcel(https://github.com/PHPOffice/PHPExcel/wiki/User-documentation) – RiggsFolly

回答

0

在这些2个功能请看: htmlentities()编码人HTML到字符(例如&quothtml_entity_decode()是backwords,将所有匹配的字符转换为html元素。

根据您的需求,您可以在您进行数据传输期间使用它们。 如果这不起作用,您可以尝试最后一拍filter_var()