技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類(lèi)目錄

贊助商

最新文章

搜索

PHP寫(xiě)入文件用file_put_contents代替fwrite優(yōu)點(diǎn)多多

作者:admin    時(shí)間:2013-8-6 9:59:58    瀏覽:

使用php有一段時(shí)間了,之前一直用fwrite寫(xiě)入文件,不過(guò)當(dāng)我知道file_put_contents這個(gè)函數(shù)之后,fwrite就比較少用了,file_put_contents比f(wàn)write代碼更簡(jiǎn)潔。具體來(lái)說(shuō),fwrite至少要3行代碼完成一次寫(xiě)入時(shí)間,而file_put_contents只需要一行代碼即可!

如下為file_put_contents的實(shí)例代碼:

<?php
$filename = 'file.txt';
$word = "你好!\r\nwebkaka";  //雙引號(hào)會(huì)換行 單引號(hào)不換行
file_put_contents($filename, $word);
?>

同樣的功能使用fwrite的實(shí)例代碼:

<?php
$filename = 'file.txt';
$word = "你好!\r\nwebkaka";  //雙引號(hào)會(huì)換行  單引號(hào)不換行
$fh = fopen($filename, "w"); //w從開(kāi)頭寫(xiě)入 a追加寫(xiě)入
echo fwrite($fh, $word);
fclose($fh);
?>

從以上兩個(gè)例子看出,其實(shí)file_put_contents是fopen、fwrite、fclose三合一的簡(jiǎn)化寫(xiě)法,這對(duì)程序代碼的優(yōu)化是有好處的,一方面在代碼量上有所減少,另一方面不會(huì)出現(xiàn)fclose漏寫(xiě)的不嚴(yán)密代碼,在調(diào)試、維護(hù)上方便很多。

上述例子里,file_put_contents是從頭寫(xiě)入,如果要追加寫(xiě)入,怎么辦呢?

在file_put_contents的語(yǔ)法里,有個(gè)參數(shù)FILE_APPEND,這是追加寫(xiě)入的聲明。實(shí)例代碼如下:

<?php
echo file_put_contents('file.txt', "This is another something.", FILE_APPEND);
?>

FILE_APPEND就是追加寫(xiě)入的聲明。在追加寫(xiě)入時(shí),為了避免其他人同時(shí)操作,往往需要鎖定文件,這時(shí)需要加多一個(gè)LOCK_EX的聲明,寫(xiě)法如下:

<?php
echo file_put_contents('file.txt', "This is another something.", FILE_APPEND|LOCK_EX);
?>

注意,以上代碼中echo輸出到顯示器里的是寫(xiě)入文件字符串的長(zhǎng)度。

常見(jiàn)問(wèn)題

Warning: fopen(file.txt) [function.fopen]: failed to open stream: Permission denied

當(dāng)寫(xiě)入文件時(shí),有時(shí)會(huì)遇到上述問(wèn)題,這是因?yàn)槲募](méi)有寫(xiě)權(quán)限的原因。為了避免這個(gè)錯(cuò)誤的出現(xiàn),在寫(xiě)入文件時(shí)需要判斷下文件是否可寫(xiě),這需要用到is_writable()這個(gè)函數(shù)。實(shí)例代碼如下:

<?php
$filename = 'file.txt';
if (is_writable($filename)) {
echo file_put_contents($filename, "This is another something.", FILE_APPEND);
} else {
    echo "文件 $filename 不可寫(xiě)";
}
?>

您可能對(duì)如下文章也感興趣

PHP fwrite換行寫(xiě)入時(shí)換行符不起作用的原因

標(biāo)簽: file_put_contents  fwrite  
x