【问题标题】:How to dowload csv file containing HTML tags如何下载包含 HTML 标签的 csv 文件
【发布时间】:2017-06-05 13:30:08
【问题描述】:

我正在尝试从 mysql 数据库下载数据。 DB 中的一个字段包含 HTML 标记。

当我尝试在 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";
    }   
?>

更新:添加图片

【问题讨论】:

  • 每次在新代码中使用the mysql_ 数据库扩展this happens 时,它都已被弃用,并且已经存在多年,并且在 PHP7 中永远消失了。如果您只是学习 PHP,请花精力学习 PDOmysqli 数据库扩展和预处理语句。 Start here
  • 请解释“它工作错误”。此外,添加输出的屏幕截图将帮助我们更好地帮助您。
  • 你可能想看看一个名为PHPExcel的库
  • 您应该停止使用@ 来抑制错误。而是正确处理错误。
  • 但是,如果您的数据库中存储了 html 标记,那么您将在 csv 中获得该 html 标记,除非您将其删除

标签: php html mysql excel csv


【解决方案1】:

看看这两个函数: htmlentities() 将 al html 编码为字符(例如 &amp;quothtml_entity_decode() 使用 backwords,将所有匹配的字符转换为 html 元素。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2019-07-17
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多