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

贊助商

分類目錄

贊助商

最新文章

搜索

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

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

使用php有一段時(shí)間了,之前一直用fwrite寫入文件,不過當(dāng)我知道file_put_contents這個函數(shù)之后,fwrite就比較少用了,file_put_contents比fwrite代碼更簡潔。具體來說,fwrite至少要3行代碼完成一次寫入時(shí)間,而file_put_contents只需要一行代碼即可!

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

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

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

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

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

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

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

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

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

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

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

常見問題

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

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

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

您可能對如下文章也感興趣

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

標(biāo)簽: file_put_contents  fwrite  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */