我在使用fputcsv编写csv文件时遇到问题。将页面html也放入csv文件中。我的代码有什么问题?
//Excel header
header("Content-Disposition: attachment; filename=\"Delivery_Reports.csv\";" );
header("Content-type: application/vnd.ms-excel");
$out = fopen("php://output", 'w');
$flag = false;
// $result = mysql_query("SELECT * FROM senderids ") or die('Query failed!');
//$sel="SELECT number as MobileNumber ,snum as Sender , msg as Subject ,crdate as Date ,status FROM savemsg WHERE userID='".$_SESSION['id']."' ".$str." ORDER BY sn DESC ";
$result = mysql_query("SELECT `count`, `dnd`, `credit`, `sender_id`, `to`, `message`, `status` FROM `reports` WHERE `unq_id` = '$dlr_id'");
while(false !== ($row = mysql_fetch_assoc($result))){
if(!$flag){
$list = array(
"Total"=>"Total",
"DND"=>"DND",
"Credits"=>"Credits",
"From"=>"From",
"To"=>"To",
"Message"=>"Message",
"Status"=>"Status"
);
// display field/column names as first row
fputcsv($out, array_keys($list), ',', '"');
$flag = true;
}
// array_walk($row, 'cleanData');
fputcsv($out, array_values($row), ',', '"');
}
fclose($out);
您无法保证在一段代码中不会输出其他任何内容。如果此代码段之前的代码正在使用输出缓冲,则可以使用ob_end_clean丢弃HTML。如果此代码段之后的代码引起了问题,则只需调用die即可使其完全不运行。但是,如果此代码段之前的代码将HTML直接输出到浏览器,或者输出HTML之后的代码必须运行,那么您必须修改该代码才能解决问题。
正如蒂姆所说,print,echo并输出到pseudo-file php://output
做的完全一样。
您也可以在关闭文件(continue
)之前使用关键字fclose($f);
。这也很可爱。
您还可以在exit;
之后使用fclose($out);
,这将阻止抓取html的输出。