2-創(chuàng)建和修改文件內(nèi)容
file_put_contents寫入文件
我們先來學(xué)習(xí)第一種寫入文件的方式:
int file_put_contents ( string $文件路徑, string $寫入數(shù)據(jù)])
功能:向指定的文件當(dāng)中寫入一個(gè)字符串,如果文件不存在則創(chuàng)建文件。返回的是寫入的字節(jié)長(zhǎng)度
<?php $data = "我是一個(gè)兵,來自老百姓"; $numbytes = file_put_contents('binggege.txt', $data); if($numbytes){ echo '寫入成功,我們讀取看看結(jié)果試試:'; echo file_get_contents('binggege.txt'); }else{ echo '寫入失敗或者沒有權(quán)限,注意檢查'; } ?>
我們發(fā)現(xiàn)寫入文件也挺簡(jiǎn)單的。按照這個(gè)函數(shù)的格式,指定文件,寫入字符串?dāng)?shù)據(jù)就可以了。
fwrite配合fopen進(jìn)行寫入操作
int fwrite ( resource $文件資源變量, string $寫入的字符串 [, int 長(zhǎng)度])
注:fwrite的別名函數(shù)是fputs
我們上節(jié)課試了r模式,只道是讀取的時(shí)候使用,接下來我們用fwrite加上fopen中的w,寫入模式來進(jìn)行文件寫入。
我們來看一下特點(diǎn):
寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建。
注意:在下面的實(shí)驗(yàn)中,你可以試試新建個(gè)test.txt文件向里面寫入內(nèi)容。然后,可以試試把test.txt刪除。看看有什么提示。
<?php $filename = 'test.txt'; $fp= fopen($filename, "w"); $len = fwrite($fp, '我是一只來自南方的狼,一直在尋找心中的花姑娘'); fclose($fp); print $len .'字節(jié)被寫入了\n"; ?>
總結(jié):
1.不論有沒有新建都會(huì)打開文件重新寫入
2.原有的文件內(nèi)容會(huì)被覆蓋掉
3.文件不存在會(huì)創(chuàng)建
那我們來對(duì)比一下以下幾個(gè)模式的不同:
? ?
我們來通過實(shí)驗(yàn)證明一下:
<?php $filename = 'test.txt'; $fp= fopen($filename, "r+"); $len = fwrite($fp, '我是一只來自南方的狼,一直在尋找心中的花姑娘'); fclose($fp); print $len .'字節(jié)被寫入了\n'; ?>
實(shí)驗(yàn)時(shí)可以把r后面的+號(hào)去掉。
我們通過實(shí)驗(yàn),確實(shí)發(fā)現(xiàn)使用r模式,在文件存的時(shí)候可以進(jìn)行寫入數(shù)據(jù),只用r的話,寫入是不成功的。
a模式和w模式的不同
同樣是下面的這段代碼,我們改為a模式。
<?php $filename = 'test.txt'; $fp= fopen($filename, "a"); $len = fwrite($fp,'讀大學(xué)迷茫了,PHP學(xué)院PHP給你希望'); echo $len .'字節(jié)被寫入了\n'; ?>
打開網(wǎng)頁(yè)執(zhí)行這段代碼,你會(huì)發(fā)現(xiàn):每刷新一次,文件中就會(huì)多一段
:讀大學(xué)迷茫了,PHP給你希望。
總結(jié):
? ?
注:a+ 是增強(qiáng)的追加功能。可以讀取時(shí)也可以使用。
x模式和w模式的不同
這段代碼我們?cè)賹?shí)驗(yàn)一次,改為x模式:
<?php $filename = 'test.txt'; $fp= fopen($filename, "x"); $len = fwrite($fp,'讀大學(xué)迷茫了,PHP學(xué)院PHP給你希望'); echo $len .'字節(jié)被寫入了\n'; ?>
我們會(huì)發(fā)現(xiàn):
1.??? 文件存在的時(shí)候會(huì)報(bào)錯(cuò)
2.??? 如果把$filename 改成其他的文件名,就可以了。但是,再次刷新的時(shí)候又報(bào)錯(cuò)了
3.??? x+ 是增強(qiáng)的x模式。讀取時(shí)也可以使用。
?