PHP檔案處理

PHP 檔案處理


資料的存取

資料在伺服器上的存取主要有兩種方式:文件或資料庫

目前絕大多數應用程式都是使用資料庫來讀寫數據,但是文件存取在某些場合仍然會使用,譬如:

•      記錄錯誤日誌

•      匯出資料到檔案

從檔案匯入資料

寫檔案

寫檔案主要有三步驟操作,就如同我們手動操作同樣,程式也要遵守下面的步驟:

•       開啟文件,使用fopen函數

•       寫入文件,使用fwrite函數

##•      寫入文件,使用fwrite函數

##•     

開啟檔案

fopen() 函數用於在PHP 中開啟檔案。

此函數的第一個參數含有要開啟的檔案的名稱,第二個參數規定了使用哪種模式來開啟檔案:

<html>
 <body>
 <?php
 $file=fopen("welcome.txt","r");
 ?>
 </body>
 </html>

檔案可能透過下列模式來開啟:

QQ图片20161009145912.png

註解:如果fopen() 函數無法開啟指定文件,則傳回0 (false)。

實例

如果fopen() 函數不能開啟指定的文件,下面的實例會產生一段訊息:

<html>
 <body>
 <?php
 $file=fopen("welcome.txt","r") or exit("Unable to open file!");
 ?>
 </body>
 </html>

 寫入檔案

#fwrite () 函數用來寫入檔案

fwrite主要也是兩個參數,handle是fopen開啟成功後回傳的Resource變量,string是要寫入的資料

# int fwrite ( resource $handle , string $string [, int $length ] )

當寫入成功後,fwrite會傳回寫入的字元數,如果寫入失敗則回傳至上

實例

<?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Bill Gates\n";
fwrite($myfile, $txt);
$txt = "Steve Jobs\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

請注意,我們向檔案"newfile.txt" 寫了兩次。在每次我們寫入檔案時,在我們發送的字串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在寫入完成後,我們使用 fclose() 函數來關閉檔案。

如果我們打開"newfile.txt" 文件,它應該是這樣的:

Bill Gates

Steve Jobs

讀取文件

fread用來讀取整個文件,而不用使用while語句進行循環,需要注意,第二個參數是用來控制讀取的最大位元組數,這個參數是必填的

string fread ( resource $handle , int $length )

執行

echo fread($resource, 1024);

#可讀取最大1024個位元組的檔案內容

關閉檔案

fclose() 函數用於關閉開啟的檔案:

<?php
 $file = fopen("test.txt","r");
 
 //执行一些代码
 
 fclose($file);
 ?>

偵測檔案末尾(EOF)

feof() 函數偵測是否已到達檔案末端(EOF)。

在迴圈遍歷未知長度的資料時,feof() 函數很有用。

註解:在 w 、a 和 x 模式下,您無法讀取開啟的檔案!

if (feof($file)) echo "檔案結尾";

#逐行讀取檔案

fgets() 函數用於從文件中逐行讀取文件。

註解:在呼叫函數之後,檔案指標會移到下一行。

實例

下面的實例逐行讀取文件,直到文件末尾為止:

<?php
 $file = fopen("welcome.txt", "r") or exit("无法打开文件!");
 // 读取文件每一行,直到文件结尾
 while(!feof($file))
 {
     echo fgets($file). "<br>";
 }
 fclose($file);
 ?>

逐字符讀取文件

#fgetc() 函數用於從檔案中逐字元讀取檔案。

註解:在呼叫函數之後,檔案指標會移到下一個字元。

實例

下面的實例逐字元讀取文件,直到文件結尾為止:

<?php
 $file=fopen("welcome.txt","r") or exit("无法打开文件!");
 while (!feof($file))
 {
     echo fgetc($file);
 }
 fclose($file);
 ?>

file_put_contents

無論是讀取或寫入,fopen和fclose都是很繁瑣的調用,從PHP5開始,引入了新的函數

int file_put_contents ( string $filename , mixed $data [, int $flags = 00005 context ]] )

file_put_contents 相當於執行了fopen + fwrite + fclose

file_put_contents('file', "hello world\n");

file_put_contents('file ', "hello world\n", FILE_APPEND);

file_get_contents

string file_get_contents ( string $filename [ bool,$use_include_incl; , int $offset = -1 [, int $maxlen ]]]]] )

 file_get_contents 相當於執行了fopen + fread + fclose

#echo file_get_contents('file');

file');

其他檔案操作函數

S  file_exists 將檔案位址當作參數傳入,可以判斷檔案是否存在,然後true或false

S  filesize 可以傳回參數中檔案的大小,以位元組為單位

S  unlink 可以刪除傳遞給它的檔案位址所代表的檔案


PHP Filesystem 參考手冊

如需查看PHP 檔案系統函數的完整參考手冊,請造訪我們的PHP Filesystem 參考手冊。


###
繼續學習
||
<html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>