儲存與取出資料:
開啟檔案:
使用fopen()函式開啟檔案。
fopen()提供三種選項的組合。
$fp = fopen("$document_root/../orders/orders.txt",'w');
r = 開啟檔案來讀取,從檔案的開頭開始。r+ =開啟檔案來讀取與寫入,從檔案的開頭開始。
w = 打開檔案來寫入 w+ = 存在則刪除既有內容,不存在則建立它。
x = 謹慎寫入,如果檔案存在則不會被開啟,會傳回false與產生警告。w+ = 開啟檔案來寫入與讀取,從檔案的開頭開始。如果檔案存在他將不會被開啟。
a = 開啟檔案來附加寫入內容,從既有的內容結尾處開始,如果檔案不存在則試著建立它。 a+ = 開啟檔案來寫入與讀取,從既有的內容結尾處開始,如果檔案不存在則試著建立它。
b = 二進位:與其中一種模式一起使用。如果你的檔案系統會區分二進位與文字檔,應該優先使用這種模式。
t = 文字:與其中一種模式一起使用。這模式只能在windows系統中選擇。除非你已移植程式碼,要與b選項一起使用,否則不建議使用。
$fp = fopen("$document_root/../orders/orders.txt",'ab');
第三個為選用參數,用於在Apache PHP MySQL中搜尋檔案用,使用時請將此參數改為true。
透過FTP或HTTP來開始檔案
開啟php.ini內的功能:allow_url_fopen
可以使用ftp://開頭的檔案。如果檔名開頭是http://他會開啟一個HTTP連結。
Unix會有檔案權限問題:
輸入以下指令來建立一個可供群組寫入的目錄,在裡面儲存訂單。
mkdir path/to/orders
chgrp apache path/to/orders
chmod 775 path/to/order
請注意檔案安全性問題,給予權限的檔案可供Web使用者寫入會變得非常危險。
寫入檔案:
使用fputs()與fwrite()來寫入。
fwrite()可接收三個參數:resource handle, string [, int length]而length為寫入的最大byte數,若指定最大byte數,超過大小則會停止寫入。你可以使用strlen()來取得字串長度。
將$outputstring裡面的字串寫入至$fp所指的檔案:
fwrite($fp,$outputstring);
另一種替代fwrite的是file_put_contents()此種方式可不必使用fopen()與fwrite()
將data裡面的資料寫至名為filename的檔案中:
int file_put_contents(string filename,mixed data[,int flags[,resource context]]);
關閉檔案:
檔案使用完畢可使用fclose()來關閉它。
fclose($fp);//關閉成功回傳true失敗回傳flase
讀取檔案:
$fp = fopen("$document_root/../orders/orders.txt",'rb');
如何得知讀取至結尾:
if(feof($fp))或者利用迴圈寫入while(!feof($fp))...
一次讀取一行:
fgets(),fgetss(),fgetcsv()
$order = fgets($fp);//會持續讀取直到碰到\n換行字元為止。當你處理純文字檔案時,很適合用此函式。
fgetss()可進一步將包住字串的PHP與HTML標籤移除。避免惡意使用者製造安全問題。
讀取整個檔案:readfile(),fpassthru(),file(),file_get_contents()
讀取字元:fgetc()
讀取任意長度:fread()
使用其他的檔案函式
檢查檔案是否存在file_exists()
確定檔大小filesize()
刪除檔案unlink()
巡覽檔案內容rewind(),fseek(),ftell()
鎖定檔案flock()可避免兩個fopen同時操作一個檔案。