Steve Jobs
PHP 覆蓋(Overwriting)
如果現在 “newfile.txt” 包含了一些數據,我們可以展示在寫入已有文件時發生的的事情。所有已存在的數據會被擦除并以一個新文件開始。
在下面的例子中,我們打開一個已存在的文件 “newfile.txt”,并向其中寫入了一些新數據:
實例
<?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Mickey Mouse\n";
fwrite($myfile, $txt);
$txt = "Minnie Mouse\n";
fwrite($myfile, $txt);
fclose($myfile);
?>
如果現在我們打開這個 “newfile.txt” 文件,Bill 和 Steve 都已消失,只剩下我們剛寫入的數據:
Mickey Mouse
Minnie Mouse
換行符‘\n’和回車符‘\r’
顧名思義,換行符就是另起一行,回車符就是回到一行的開頭,所以我們平時編寫文件的回車符應該確切來說叫做回車換行符
‘\n’ 10 換行(newline)
‘\r’ 13 回車(return)
也可以表示為’\x0a’和’\x0d’.(16進制)
在windows系統下,回車換行符號是”\r\n”.但是在Linux等系統下是沒有”\r”符號的。
在解析文本或其他格式的文件內容時,常常要碰到判定回車換行的地方,這個時候就要注意既要判定”\r\n”又要判定”\n”。
寫程序時可能得到一行,將其進行trim掉’\r’,這樣能得到你所需要的string了。
PHP file_put_contents() 函數
PHP file_put_contents() 函數是一次性向文件寫入字符串或追加字符串內容的最合適選擇。
file_put_contents() 函數用于把字符串寫入文件,成功返回寫入到文件內數據的字節數,失敗則返回 FALSE。
語法:
int file_put_contents ( string filename, string data [, int flags [, resource context]] )
參數說明:
| 參數 | 說明 |
| filename | 要寫入數據的文件名 |
| data | 要寫入的數據。類型可以是 string,array(但不能為多維數組),或者是 stream 資源 |
| flags | 可選,規定如何打開/寫入文件。可能的值: 1. FILE_USE_INCLUDE_PATH:檢查 filename 副本的內置路徑 2. FILE_APPEND:在文件末尾以追加的方式寫入數據 3. LOCK_EX:對文件上鎖 |
| context | 可選,Context是一組選項,可以通過它修改文本屬性 |
例子:
<?php
echo file_put_contents("test.txt", "This is something.");
?>
運行該例子,瀏覽器輸出:
18
而 test.txt 文件(與程序同目錄下)內容則為:This is something.。
提示
如果文件不存在,則創建文件,相當于fopen()函數行為。
如果文件存在,默認將清空文件內的內容,可設置 flags 參數值為 FILE_APPEND 以避免(見下)。
本函數可安全用于二進制對象。
以追加形式寫入內容
當設置 flags 參數值為 FILE_APPEND 時,表示在已有文件內容后面追加內容的方式寫入新數據:
<?php
file_put_contents("test.txt", "This is another something.", FILE_APPEND);
?>
執行程序后,test.txt 文件內容變為:
This is something.This is another something.
file_put_contents() 的行為實際上等于依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。