要在php中開啟乙個檔案,可以使用fopen()函式。這個時候我們還需要指定如何使用它,這就是檔案模式。
從本質上,檔案模式可以告訴作業系統一種機制,這種機制可以決定如何處理來自其他人或指令碼的訪問請求,以及一種用來檢查你是否有權訪問這個特定檔案的方法。
當開啟乙個檔案的時候,有以下3種選擇:
1)開啟檔案為了唯讀,只寫或者讀和寫。
2)如果要寫乙個檔案,可能是希望覆蓋所有已有的檔案內容,或者僅僅將新資料追加到檔案末尾。如果該檔案已經存在,也可以終止程式的執行而不是覆蓋該檔案。
3)如果希望在乙個區分了二進位制方式和純文字方式的系統上寫乙個檔案,還必須指定採用的方式。
其中,函式fopen()支援以上3種方式的組合。
$fp = fopen("$document_root/../orders/orders.txt", 'w');
呼叫fopen()的時候,需要傳遞2個、3個或4個引數。通常使用2個引數。
注意:在unix環境下,目錄中的間隔符是正斜線(/)。如果使用的是windows平台,可以使用正斜線或者反斜線。如果使用反斜線,就必須使用轉義,這樣函式才可以正確理解這些字元。一般我們還是使用正斜線,這樣**不需要任何修改就可以在windows和unix機器上執行。
fopen()函式的第二個引數是檔案模式,它是乙個字串,指定了將對檔案的操作。
fopen()函式的檔案模式總結如下表:
模式模式名稱意義r
只讀讀模式—開啟檔案,從檔案頭開始讀
r+唯讀
讀寫模式—開啟檔案,從檔案頭開始讀寫w只寫
寫模式—開啟檔案,從檔案頭開始讀。如果該檔案已經存在,將刪除所有檔案已有內容。如果該檔案不存在,函式將建立這個檔案
w+只寫
寫模式—開啟檔案,從檔案頭開始讀寫。如果該檔案已經存在,將刪除所有檔案已有內容。如果該檔案不存在,函式將建立這個檔案
x謹慎寫
寫模式開啟檔案,從檔案頭開始寫。如果檔案已經存在,該檔案將不會被開啟,fopen()函式返回false,而且php將產生乙個警告
x+謹慎寫
寫/讀模式開啟檔案,從檔案頭開始寫。如果檔案已經存在,該檔案將不會被開啟,fopen()函式將返回false,而且php將產生乙個警告a追加
追加模式—開啟檔案,如果該檔案已有內容,將從檔案末尾開始追加(寫),如果該檔案不存在,函式將建立這個檔案。
a+追加
追加模式—開啟檔案,如果該檔案已有內容,將從檔案末尾開始追加(寫)或者讀,如果該檔案不存在,函式將建立這個檔案
b二進位制
二進位制模式—用於與其他模式進行連線。如果檔案系統能夠區分二進位制檔案和文字檔案。推薦一直使用這個選項以獲得最大程度的可移植性t文字
用於與其他模式的結合。不是推薦選項
fopen()函式的第3個引數是可選的。如果要在include_path中搜尋乙個檔案,就可以使用它。如果希望進行進行這個操作,可以將這個引數設定為1.
第4個引數也是可選的.fopen()函式允許檔名稱以協議名稱開始,並且在乙個遠端的位置開啟檔案。
如果fopen()成功開啟乙個檔案,該函式將返回乙個指向這個檔案的檔案指標。我們就是通過這個檔案指標來操作這個檔案的。
在php中可以使用fwrite()或者fputs()來寫檔案。呼叫方式如下:
fwrite($fp, $outputstring);
這個函式告訴php將儲存在$outputstring中的字串寫入到$fp指向的檔案中。
fwrite()的原型如下所示:
int fwrite(resource handle, string string [, int length])
其中第3個引數length是寫入的最大字元數。
當使用完檔案後,應該將其關閉。呼叫fclose()函式:
fclose($fp);
如果該檔案被成功關閉,函式將返回乙個true值。反之,該函式將返回false。
仍然使用fopen()函式開啟檔案。以唯讀模式開啟檔案,故使用了"rb"檔案模式。
使用feof()函式作為檔案結束的測試條件:
while(!feof($fp))
函式feof()的唯一引數是檔案指標。如果該檔案指標指向了檔案末尾,它將返回true。
1)使用fgets()函式來讀取檔案內容:$order = fgets($fp, 999);
2)fgets()函式的乙個變體是fgetss()函式,其原型:string fgetss(resource fp, int length, string [allowable_tags]);
它可以過濾字串中包含的php和html標記。
3)fgetscv()函式是fgets()的另乙個變體。其原型:array fgetscv(resource fp, int length [, string delimiter [, string enclosure]])
當檔案中使用了定界符時,可以使用該函式將文字分成多行。
函式原型:string fread(resource fp, int length);
在php中,檔案鎖定是通過flock()函式來實現的。當乙個檔案被開啟並且在進行讀寫操作之前,應該呼叫這個函式。這個函式的原型如下:
bool flock(resource fp, int operation [, int &wouldblock])
注意:flock()函式無法在nfs或其他網路檔案系統中使用。
$visitorip = $_server["remote_addr"];
date_default_timezone_set('asia/chongqing');
$currenttime = date("h:i:s");
$file_path = './1.txt';
if(file_exists($file_path))else
echo 'the content is:'.$content;
if(!fwrite($handle, '
'.'ip: '.$visitorip.' time: '.$currenttime)) echo 'write error!';
fclose($handle);
//$file = file_get_contents('./1.txt');//可以獲得
//var_dump($file);
php操作php檔案
聽起來有些暈吧?使用php來操作php頁面。有乙個小的用途,在乙個系統當中可能會有個別的小項不便存入資料庫,但是我們又要經常在其他頁面當中呼叫,而且還需要更新,那麼我們就可以用這種方式來解決。其中遇到幾個小問題,搞了俺半天時間才搞定 比如說 使用者需要更改某乙個標題,但是單獨為這個標題在建立乙個表,...
php檔案操作
1 開啟檔案 resource fopen string filename,string mode bool use include path resource zcontext handle fopen filename,mode 開啟檔案,返回代表此檔案的資源的控制代碼 檔名稱可以使用相對路徑或...
PHP 檔案操作
建立檔案 方法一 file fopen test.txt w 方法二 touch file 建立資料夾 mkdir web www testing test dir 0700 建立多層資料夾 原生 mkdir web www testing test dir 0700,true 遞迴 functio...