在php系統開發中,除了顯示html外,偶爾也會遇到輸出檔案的問題,關於輸出檔案,主要是三類,1. 輸出磁碟中已有檔案 2. 輸出生成的檔案(如:csv pdf等) 3. 獲取生成檔案內容,做處理後輸出,現在我一一對三類輸出做一下總結。
1. 輸出磁碟中已有檔案
2. 輸出生成的檔案(如:csv pdf等)<?php
$file = 'a.pdf';
if (file_exists($file))
?>
3. 獲取生成檔案內容,做處理後輸出<?php
header('content-description: file transfer');
header('content-disposition: attachment; filename=a.csv');
header('content-transfer-encoding: binary');
header('expires: 0');
header('cache-control: must-revalidate, post-check=0, pre-check=0');
header('pragma: public');
ob_clean();
flush();
$rowarr=array(array('1','2','3'),array('1','2','3'));
$fp=fopen('php://output', 'w');
foreach($rowarr as $row)
fclose($fp);
exit;
?>
這個在實際中可能非常的少見了,獲取生成檔案的內容一般是先生成檔案,然後讀取,最後刪除,其實這個可以使用php://temp來做操作,以下仍以csv舉例
關於php輸出非html格式檔案總結就到這裡,其實php中的input/output streams功能十分的強大,用好了,能夠簡化編碼,提高效率,有空不妨關注學習一下。<?php
header('content-description: file transfer');
header('content-disposition: attachment; filename=a.csv');
header('content-transfer-encoding: binary');
header('expires: 0');
header('cache-control: must-revalidate, post-check=0, pre-check=0');
header('pragma: public');
ob_clean();
flush();
$rowarr=array(array('1','2','中文'),array('1','2','3'));
$fp=fopen('php://temp', 'r+');
foreach($rowarr as $row)
rewind($fp);
$filecontent=stream_get_contents($fp);
fclose($fp);
//處理 $filecontent內容
$filecontent=iconv('utf-8','gbk',$filecontent);
echo $filecontent; //輸出
exit;
?>
用php更改非php輸出內容
用php更改非php輸出內容.前幾天有個需求,就是將頁面輸出的內容進行過濾.進行網域名稱更換.比如本來將輸出的www.csdn.net image 上面的內容,現在遷移到了cdn上面,網域名稱更改為cdn.csdn.net image 再不更改模版的基礎上,直接將輸出進行修正.實現過程 1.將所有輸...
php的時間輸出格式
php中時間一般分為兩種格式,一種是標準時間格式timestamp,即y m d g i s。另一種就是時間戳。例如 一 標準時間與時間戳轉換 獲得服務端系統時間 date default timezone set prc nowtime date y m d g i s 標準時間轉為時間戳 dat...
php的時間輸出格式
php中時間一般分為兩種格式,一種是標準時間格式timestamp,即y m d g i s。另一種就是時間戳。例如 一 標準時間與時間戳轉換 獲得服務端系統時間 date default timezone set prc nowtime date y m d g i s 標準時間轉為時間戳 dat...