在PHP網站開發中,存儲資料通常有兩種方式,一種以文字文件方式存儲,例如txt文件,一種是以資料庫方式存儲,例如Mysql,相對於資料庫存儲,文件存儲並沒有什麼優勢,但是文件讀寫操作在基本的PHP開發中還是時有使用
# 將資料寫入文件的操作主要涉及三個步驟及部分文件操作函數如下:
1、開啟檔案(檔案操作函數:fopen)
2、寫入檔案(檔案操作函數:fwrite等)
3、關閉檔案(檔案運算函數:fclose)
下面透過檔案讀取寫入操作程式碼實例教學來講解
基本的PHP檔案寫入操作函數fopen、fwrite、fclose應用教學
<? @$fp = fopen("leapsoulcn.txt","w"); if(!$fp){ echo "system error"; exit(); }else { $fileData = "domain"."\t"."www.php.cn"."\n"; $fileData = $fileData."description"."\t"."PHP网站,面向PHP初学者的 PHP教程 网。"."\n"; $fileData = $fileData."title"."\t"."本文主要讲述PHP文件读写操作中最基本的文件写入教程。"; fwrite($fp,$fileData); fclose($fp); } ?>
註解:在這段檔案讀取和寫入操作實例程式碼中,主要功能是在文件寫入兩行文字。
知識點:
1、使用fopen函數開啟文件,在應用fopen函數準備開啟檔案時,你首先需要明確:
開啟檔案幹嘛?是讀文件中的資料呢,還是將資料寫入文件,亦或者讀寫文件?
另外你需要考慮如果文件中已經存在相關數據,你是覆蓋原有文件中的數據呢,還是僅僅將新數據添加到文件末尾
這些問題涉及到PHP文件讀寫操作中的fopen函數中的檔案模式的應用,fopen函數原型如下:
fopen(filename,mode,include_path,context)
呼叫檔案操作函數fopen()時,通常需要傳遞兩個或三個參數。
filename:規定要開啟的檔案或URL。可以指定檔案的絕對路徑,Windows一般為C:\,Unix為/,透過URL,你也可以開啟遠端檔案。在這裡寫入的檔案與PHP檔案寫入程式碼檔案我放在同一個目錄。
mode:規定要求到該檔案/流的存取類型。即開啟文件的模式。
include_path:可選項。如果需要在include_path中搜尋檔案的話,可以將該參數設為1或TRUE。
常用的fopen的文件操作模式說明
”r” - 以唯讀方式開啟文件,從文件頭開始讀取。
”r+” - 以讀寫方式開啟檔案。
”w” - 以寫入方式開啟文件,從文件頭開始寫入。如果文件不存在則嘗試創建,如果文件存在,則先刪除文件中的內容。
”w+” - 以讀寫方式開啟文件,從文件頭開始讀寫。如果文件不存在則嘗試創建,如果文件存在,則先刪除文件中的內容。
」a」 - 以寫入方式打開,從檔案結尾開始追加寫。如果文件不存在則嘗試建立。
」a+」 - 以讀寫方式打開,從檔案結尾開始追加寫寫或讀取。如果文件不存在則嘗試建立。
注意:在進行檔案讀寫操作時,你一定要確保開啟的檔案具有對應的讀寫權限,否則fopen會報錯。你可以使用@來抑制產生的錯誤,然後合理地處理錯誤。
2、在使用檔案操作函數fopen開啟檔案後,需要透過對變數賦值,然後寫到$fp指向的檔案指標中去,在上述PHP檔案寫入操作教學實例中,我使用的是一行一行存儲,即換行儲存,主要透過\n作為換行分隔符號。
fwrite檔案寫入函數原型如下:
程式碼如下:
fwrite(fp,string,length)
在這裡你也可以使用檔案寫入函數fputs,其是fwrite的別名函數,功能與用法與fwrite相同。
在檔案寫入函數fwrite中length是可選項,主要用來設定寫入檔案的最大字元數,如果設定了這個參數,fwrite會依照設定的length,在指定檔案中寫入規定長度的字元。 fwrite()傳回寫入檔案的字元數,出現錯誤時則傳回false。
在檔案寫入作業完成後,需要關閉檔案句柄,否則會佔用系統資源等。可以使用fclose($fp)函數來完成這件事。檔案關閉成功則回傳true,否則回傳false。
至此文件寫入作業就完成了。
下面來介紹讀取檔案的幾種方式:
1. fread()
<?php $file_path = "test.txt"; if(file_exists($file_path)){ $fp = fopen($file_path,"r"); $str = fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来 echo $str = str_replace("\r\n","<br />",$str); } ?>
2.
<?php $file_path = "test.txt"; if(file_exists($file_path)){ $str = file_get_contents($file_path);//将整个文件内容读入到一个字符串中 $str = str_replace("\r\n","<br />",$str); echo $str; } ?>
3.
<?php $file_path = "test.txt"; if(file_exists($file_path)){ $fp = fopen($file_path,"r"); $str = ""; $buffer = 1024;//每次读取 1024 字节 while(!feof($fp)){//循环读取,直至读取完整个文件 $str .= fread($fp,$buffer); } $str = str_replace("\r\n","<br />",$str); echo $str; } ?>
4.
<?php $file_path = "test.txt"; if(file_exists($file_path)){ $file_arr = file($file_path); for($i=0;$i<count($file_arr);$i++){//逐行读取文件内容 echo $file_arr[$i]."<br />"; } /* foreach($file_arr as $value){ echo $value."<br />"; }*/ } ?>
5.
<?php $file_path = "test.txt"; if(file_exists($file_path)){ $fp = fopen($file_path,"r"); $str =""; while(!feof($fp)){ $str .= fgets($fp);//逐行读取。如果fgets不写length参数,默认是读取1k。 } $str = str_replace("\r\n","<br />",$str); echo $str; } ?>
以上是php讀取檔案方式彙整與操作程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!