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