简体   繁体   English

如何下载包含HTML标签的csv文件

[英]How to dowload csv file containing HTML tags

I'm trying to download data from mysql database. 我正在尝试从mysql数据库下载数据。 One field in DB contains HTML tags. DB中的一个字段包含HTML标记。

When I try to open downloaded csv this file in excel it works wrong, because of tabulation and HTML tags. 当我尝试在excel中打开下载的csv时,由于制表和HTML标记,它无法正常工作。 Is there any way to open it correctly in excel? 有什么办法可以在excel中正确打开它吗?

My php script: 我的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: added images 更新:添加了图像

CSV中的数据 excel如何解析

Take a look at those 2 functions: htmlentities() encodes al html into chars (eg &quot ) html_entity_decode() goes backwords, converting all the matching chars to html elements. 看一下这两个函数: htmlentities()将html编码为chars(例如&quothtml_entity_decode()成为后备单词,将所有匹配的chars转换为html元素。

You could them during you data transfer, based on your needs. 您可以根据需要在数据传输期间使用它们。 If this won't work you could try a final shot at filter_var() 如果这样不起作用,您可以在filter_var()尝试最后一击

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM