PHP創(chuàng)建文件及寫(xiě)入數(shù)據(jù)(覆蓋寫(xiě)入,追加寫(xiě)入)的方法詳解
本文實(shí)例講述了PHP創(chuàng)建文件及寫(xiě)入數(shù)據(jù)(覆蓋寫(xiě)入,追加寫(xiě)入)的方法。分享給大家供大家參考,具體如下:
這里主要介紹了PHP創(chuàng)建文件,并向文件中寫(xiě)入數(shù)據(jù),覆蓋,追加的實(shí)現(xiàn)代碼,需要的朋友可以參考下:
創(chuàng)建文件我們用到函數(shù)
fopen ( string filename, string mode )
參數(shù):
filename:創(chuàng)建文件名
mode:以什么方式打開(kāi)文件filename
其中mode可能值列表:
mode | 說(shuō)明 |
‘r' | 只讀方式打開(kāi),將文件指針指向文件頭。 |
‘r+' | 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭。 |
‘w' | 寫(xiě)入方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。 |
‘w+' | 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。 |
‘a(chǎn)' | 寫(xiě)入方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。 |
‘a(chǎn)+' | 讀寫(xiě)方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。 |
‘x' | 創(chuàng)建并以寫(xiě)入方式打開(kāi),將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級(jí)別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建之。這和給 底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標(biāo)記是等價(jià)的。此選項(xiàng)被 PHP 4.3.2 以及以后的版本所支持,僅能用于本地文件。 |
‘x+' | 創(chuàng)建并以讀寫(xiě)方式打開(kāi),將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級(jí)別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建之。這和給 底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標(biāo)記是等價(jià)的。此選項(xiàng)被 PHP 4.3.2 以及以后的版本所支持,僅能用于本地文件。 |
下面代碼是我通過(guò)利用函數(shù)fopen創(chuàng)建一個(gè)名為Demo,格式為txt的文件,并在文件中寫(xiě)入"Welcome To ItCodeWorld!"的數(shù)據(jù)。
<?php //要?jiǎng)?chuàng)建的兩個(gè)文件 $TxtFileName = "Demo.txt"; //以讀寫(xiě)方式打?qū)懼付ㄎ募绻募淮鎰t創(chuàng)建 if( ($TxtRes=fopen ($TxtFileName,"w+")) === FALSE){ echo("創(chuàng)建可寫(xiě)文件:".$TxtFileName."失敗"); exit(); } echo ("創(chuàng)建可寫(xiě)文件".$TxtFileName."成功!</br>"); $StrConents = "Welcome To ItCodeWorld!";//要 寫(xiě)進(jìn)文件的內(nèi)容 if(!fwrite ($TxtRes,$StrConents)){ //將信息寫(xiě)入文件 echo ("嘗試向文件".$TxtFileName."寫(xiě)入".$StrConents."失??!"); fclose($TxtRes); exit(); } echo ("嘗試向文件".$TxtFileName."寫(xiě)入".$StrConents."成功!"); fclose ($TxtRes); //關(guān)閉指針 ?>
PHP 創(chuàng)建文件 – fopen()
fopen()
函數(shù)也用于創(chuàng)建文件。也許有點(diǎn)混亂,但是在 PHP 中,創(chuàng)建文件所用的函數(shù)與打開(kāi)文件的相同。
如果您用 fopen()
打開(kāi)并不存在的文件,此函數(shù)會(huì)創(chuàng)建文件,假定文件被打開(kāi)為寫(xiě)入(w)或增加(a)。
下面的例子創(chuàng)建名為 "testfile.txt" 的新文件。此文件將被創(chuàng)建于 PHP 代碼所在的相同目錄中:
實(shí)例
$myfile = fopen("testfile.txt", "w")
PHP 文件權(quán)限
如果您試圖運(yùn)行這段代碼時(shí)發(fā)生錯(cuò)誤,請(qǐng)檢查您是否有向硬盤(pán)寫(xiě)入信息的 PHP 文件訪(fǎng)問(wèn)權(quán)限。
PHP 寫(xiě)入文件 – fwrite()
fwrite()
函數(shù)用于寫(xiě)入文件。
fwrite()
的第一個(gè)參數(shù)包含要寫(xiě)入的文件的文件名,第二個(gè)參數(shù)是被寫(xiě)的字符串。
下面的例子把姓名寫(xiě)入名為 "newfile.txt" 的新文件中:
實(shí)例
<?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); ?>
請(qǐng)注意,我們向文件 "newfile.txt" 寫(xiě)了兩次。在每次我們向文件寫(xiě)入時(shí),在我們發(fā)送的字符串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在寫(xiě)入完成后,我們使用 fclose()
函數(shù)來(lái)關(guān)閉文件。
如果我們打開(kāi) "newfile.txt" 文件,它應(yīng)該是這樣的:
Bill Gates
Steve Jobs
PHP 覆蓋(Overwriting)
如果現(xiàn)在 "newfile.txt" 包含了一些數(shù)據(jù),我們可以展示在寫(xiě)入已有文件時(shí)發(fā)生的的事情。所有已存在的數(shù)據(jù)會(huì)被擦除并以一個(gè)新文件開(kāi)始。
在下面的例子中,我們打開(kāi)一個(gè)已存在的文件 "newfile.txt",并向其中寫(xiě)入了一些新數(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)在我們打開(kāi)這個(gè) “newfile.txt” 文件,Bill 和 Steve 都已消失,只剩下我們剛寫(xiě)入的數(shù)據(jù):
Mickey Mouse
Minnie Mouse
換行符‘\n'和回車(chē)符‘\r'
顧名思義,換行符就是另起一行,回車(chē)符就是回到一行的開(kāi)頭,所以我們平時(shí)編寫(xiě)文件的回車(chē)符應(yīng)該確切來(lái)說(shuō)叫做回車(chē)換行符
‘\n' 10 換行(newline)
‘\r' 13 回車(chē)(return)
也可以表示為'\x0a'和'\x0d'.(16進(jìn)制)
在windows系統(tǒng)下,回車(chē)換行符號(hào)是”\r\n”.但是在Linux等系統(tǒng)下是沒(méi)有”\r”符號(hào)的。
在解析文本或其他格式的文件內(nèi)容時(shí),常常要碰到判定回車(chē)換行的地方,這個(gè)時(shí)候就要注意既要判定”\r\n”又要判定”\n”。
寫(xiě)程序時(shí)可能得到一行,將其進(jìn)行trim掉'\r',這樣能得到你所需要的string了。
PHP file_put_contents() 函數(shù)
PHP file_put_contents() 函數(shù)是一次性向文件寫(xiě)入字符串或追加字符串內(nèi)容的最合適選擇。
file_put_contents()
函數(shù)用于把字符串寫(xiě)入文件,成功返回寫(xiě)入到文件內(nèi)數(shù)據(jù)的字節(jié)數(shù),失敗則返回 FALSE。
語(yǔ)法:
int file_put_contents ( string filename, string data [, int flags [, resource context]] )
參數(shù)說(shuō)明:
參數(shù) | 說(shuō)明 |
filename | 要寫(xiě)入數(shù)據(jù)的文件名 |
data | 要寫(xiě)入的數(shù)據(jù)。類(lèi)型可以是 string,array(但不能為多維數(shù)組),或者是 stream 資源 |
flags | 可選,規(guī)定如何打開(kāi)/寫(xiě)入文件??赡艿闹担?br />
1. FILE_USE_INCLUDE_PATH:檢查 filename 副本的內(nèi)置路徑 2. FILE_APPEND:在文件末尾以追加的方式寫(xiě)入數(shù)據(jù) 3. LOCK_EX:對(duì)文件上鎖 |
context | 可選,Context是一組選項(xiàng),可以通過(guò)它修改文本屬性 |
例子:
<?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 以避免(見(jiàn)下)。
本函數(shù)可安全用于二進(jìn)制對(duì)象。
以追加形式寫(xiě)入內(nèi)容
當(dāng)設(shè)置 flags 參數(shù)值為 FILE_APPEND 時(shí),表示在已有文件內(nèi)容后面追加內(nèi)容的方式寫(xiě)入新數(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()
功能一樣。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php文件操作總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語(yǔ)法入門(mén)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php逐行讀取txt文件寫(xiě)入數(shù)組的方法
- 解析PHP中如何將數(shù)組變量寫(xiě)入文件
- php fputcsv命令 寫(xiě)csv文件遇到的小問(wèn)題(多維數(shù)組連接符)
- php文件操作之文件寫(xiě)入字符串、數(shù)組的方法分析
- PHP使用內(nèi)置函數(shù)file_put_contents寫(xiě)入文件及追加內(nèi)容的方法
- PHP創(chuàng)建文件,并向文件中寫(xiě)入數(shù)據(jù),覆蓋,追加的實(shí)現(xiàn)代碼
- php實(shí)現(xiàn)讀取和寫(xiě)入tab分割的文件
- php對(duì)csv文件的讀取,寫(xiě)入,輸出下載操作詳解
- PHP如何將log信息寫(xiě)入服務(wù)器中的log文件
- php實(shí)現(xiàn)將數(shù)組或?qū)ο髮?xiě)入到文件的方法小結(jié)【三種方法】
相關(guān)文章
php Smarty date_format [格式化時(shí)間日期]
php Smarty date_format [格式化時(shí)間日期] ,需要的朋友可以參考下。2010-03-03PHP常用字符串操作函數(shù)實(shí)例總結(jié)(trim、nl2br、addcslashes、uudecode、md5等)
這篇文章主要介紹了PHP常用字符串操作函數(shù),結(jié)合實(shí)例形式總結(jié)分析了PHP針對(duì)字符串操作的常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01使用Smarty 獲取當(dāng)前日期時(shí)間和格式化日期時(shí)間的方法詳解
本篇文章是對(duì)使用Smarty獲取當(dāng)前日期時(shí)間和格式化日期時(shí)間的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Can''t create/write to file ''C:\WINDOWS\TEMP\...MYSQL報(bào)錯(cuò)解決方法
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL報(bào)錯(cuò)解決方法,參考下面的方法即可。2011-06-06利用PHP判斷是手機(jī)移動(dòng)端還是PC端訪(fǎng)問(wèn)的函數(shù)示例
在平常工作開(kāi)發(fā)中,我們通常需要開(kāi)發(fā)出PC端和移動(dòng)端兩個(gè)不同的系統(tǒng),從而根據(jù)訪(fǎng)問(wèn)端的不同進(jìn)入到不同的操作界面中。下面這篇文章主要給大家介紹了關(guān)于利用PHP判斷是手機(jī)移動(dòng)端還是PC端訪(fǎng)問(wèn)的函數(shù)的相關(guān)資料,需要的朋友可以參考下。2017-12-12