首頁 >後端開發 >php教程 >php讀取檔案方式彙整與操作程式碼詳解

php讀取檔案方式彙整與操作程式碼詳解

伊谢尔伦
伊谢尔伦原創
2017-07-17 09:59:321108瀏覽

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn