PHP中對檔案的操作:建立、讀取、上傳、編輯。 PHP提過了多種相關的函數。 1、readfile()
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
參數: filename:檔案名稱; use_include_path:是否也在include_path中搜尋檔案; context:規定檔案控制代碼的環境。Context 是可以修改流的行為的一套選項。
傳回值:返回從檔案中讀入的位元組數。如果出錯返回 FALSE 並且除非是以 @readfile() 形式調用,否則會顯示錯誤資訊。
樣本:
1.php和new.txt在同一個檔案夾
1.php內容:
<?phpecho @readfile("new.txt");?>
new.txt內容:
It's a new file.
運行1.php結果:
It's a new file.16 2、fopen()
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
參數: filename:如果 filename 是 “scheme://…” 的格式,則被當成一個 URL,PHP 將搜尋協議處理器(也被稱為封裝協議)來處理此模式。如果該協議尚未註冊封裝協議,PHP 將發出一條訊息來協助檢查指令碼中潛在的問題並將 filename 當成一個普通的檔案名稱繼續執行下去。; mode:指定了所要求到該流的訪問類型; use_include_path:是否也在include_path中搜尋檔案; context:規定檔案控制代碼的環境。Context 是可以修改流的行為的一套選項。
傳回值:
成功時返回檔案指標資源,如果開啟失敗,本函數返回 FALSE。
註:檔案訪問類型表
mode |
說明 |
“r” |
唯讀方式開啟,將檔案指標指向檔案頭。 |
“r+” |
讀寫方式開啟,將檔案指標指向檔案頭。 |
“w” |
寫入方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。 |
“w+” |
讀寫方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。 |
“a” |
寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。 |
“a+” |
讀寫方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。 |
“x” |
建立並以寫入方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。這和給底層的 open(2) 系統調用指定 O_EXCL |
“x+” |
建立並以讀寫方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。這和給底層的 open(2) 系統調用指定 O_EXCL |
3、fread()
string fread ( resource $handle , int $length )
從檔案指標 handle 讀取最多 length 個位元組
參數: head:檔案系統指標,是典型地由 fopen() 建立的 resource(資源); length:最多讀取 length 個位元組。
傳回值:
返回所讀取的字串, 或者在失敗時返回 FALSE。 4、fclose()
bool fclose ( resource $handle )
將指定檔案關閉(好習慣,減少伺服器資源佔用)。檔案指標必須有效,並且是通過 fopen() 或 fsockopen() 成功開啟的。 5、fgets()
string fgets ( resource $handle [, int $length ] )
從檔案中讀取一行資料。從 handle 指向的檔案中讀取一行並返回長度最多為 length - 1 位元組的字串。碰到分行符號(包括在傳回值中)、EOF 或者已經讀取了 length - 1 位元組後停止(看先碰到那一種情況)。如果沒有指定 length,則預設為 1K,或者說 1024 位元組。 6、feof()
bool feof ( resource $handle )
測試檔案指標是否到了檔案結束的位置。 7、fgetc()
string fgetc ( resource $handle )
從檔案中讀取單個字元。 8、fwrite()
int fwrite ( resource $handle , string $string [, int $length ] )
參數: handle:檔案系統指標,是典型地由 fopen() 建立的 resource(資源); string:要寫入的字串; length:如果指定了 length,當寫入了 length 個位元組或者寫完了 string 以後,寫入就會停止,視乎先碰到哪種情況。
傳回值:
fwrite() 返回寫入的字元數,出現錯誤時則返回 FALSE 。 9、一個超級簡單的評論牆
<html><head><title>評論牆</title></head><body><!--評論表單--><form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">暱稱:<input type="text" name="name"></input><br />評論:<textarea rows='5' cols='19' name="comment"></textarea><br /><input type="submit" name="submit" value="提交"></form><!--儲存評論到檔案--><?php/**檔案的讀寫測試*/if($_SERVER['REQUEST_METHOD']=='POST'){#開啟檔案$fname="D:\\comment.txt";$file=fopen($fname,"a+");#寫入資料$name=@$_POST['name'];$comment=@$_POST['comment'];$str=$name."`".$comment."\r\n";fwrite($file,$str);#關閉檔案fclose($file);}?><!--顯示評論內容--><table cellpadding="4" ><tr><td><b>暱稱</b></td><td><b>評論</b></td></tr><?php$fname="D:\\comment.txt";$file=fopen($fname,"r");while(!feof($file)){ $line=fgets($file); $arr=explode("`",$line); echo @"<tr><td>$arr[0]</td><td>$arr[1]</td></tr>";}fclose($file);?></table></body></html>