我正在尝试从WordPress中动态创建一个可下载的csv文件。要包含的数据是正确的,并且文件已成功创建用于下载。但是,创建的csv文件包含模板HTML输出。
如果没有模板中的HTML,如何输出数据?
下面是函数。数组正确地填充了一个SQL查询,但结果与此相同。
function exportAsCSV ( ) {
$csv = '';
$header_array = array('Header 1', 'Header 2', 'Header 3');
$data_array = array(
array('Row 1 A', 'Row 1 B', 'Row 1 C'),
array('Row 2 A', 'Row 2 B', 'Row 2 C'),
);
$csv .= implode(', ', $header_array);
$csv .= '\n';
foreach($data_array as $row){
$csv .= implode(', ', $row);
$csv .= '\n';
}
$now = gmdate('D, d M Y H:i:s') . ' GMT';
header('Content-Type: text/csv');
header('Expires: ' . $now);
header('Content-Disposition: attachment; filename="data.csv"');
header('Pragma: no-cache');
echo $csv;
exit();
}
函数的调用如下:
if(isset($_GET['export_data'])){
ob_end_clean();
exportAsCSV();
}
2条答案
按热度按时间hiz5n14c1#
为了更安全,你可以在发送任何数据之前清空输出缓冲区,然后开始发送数据到输出缓冲区,并在关闭数据流之前刷新它。
lkaoscv72#
我想明白了。更多级别的输出缓冲。现在,我调用
ob_get_level()
来确定ob_end_clean()
的次数。输出中不再有额外的HTML。