我尝试使用Mysql
从php
获取后将记录导出到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文件添加标题内容。如果有人指导我,我将不胜感激。
答案 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之前进行清理将插入干净的数据,并且对我有用。