如何在使用php导出到csv之前删除html标签?

时间:2016-05-16 09:02:45

标签: php

我尝试使用Mysqlphp获取后将记录导出到csv文件。我遵循这些answer说明并且对我来说工作正常。

function array2csv(array &$array)
{
   if (count($array) == 0) {
     return null;
   }
   ob_start();
   $df = fopen("php://output", 'w');
   fputcsv($df, array_keys(reset($array)));
   foreach ($array as $row) {
      fputcsv($df, $row);
   }
   fclose($df);
   return ob_get_clean();
}

function download_send_headers($filename) {
    header("Content-Type: text/csv");
    header("Content-Disposition: attachment; filename={$filename}");
    // Disable caching
    header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
    header("Pragma: no-cache"); // HTTP 1.0
    header("Expires: 0"); // Proxies
}
download_send_headers("data_export_" . date("Y-m-d") . ".csv");
echo array2csv($s);
die();

但问题是这个函数还添加了html材料(Header Content like title and meta title etc)以及记录,所以任何人都可以指导我如何防止为csv文件添加标题内容。如果有人指导我,我将不胜感激。

enter image description here

2 个答案:

答案 0 :(得分:0)

你可以改变你的功能:

function array2csv(array &$array)
{
   if (count($array) == 0) {
     return null;
   }
   ob_start();
   $df = fopen("php://output", 'w');
   fputcsv($df, array_keys(reset($array)));
   foreach ($array as $row) {
      $data = strip_tags($row); // strip html tags here
      if(!empty($data)){
      fputcsv($df, $data);
      }
   }
   fclose($df);
   return ob_get_clean();
}

答案 1 :(得分:0)

我已经在您写过ob_get_clean();的地方写过ob_start();,并且解决了。
我发现在输出到CSV之前进行清理将插入干净的数据,并且对我有用。