官方介紹
file_put_contents() 函數把一個字符串寫入文件中。
與依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。
寫入方法的比較
先來看看使用 fwrite 是如何寫入文件的
$filename = 'HelloWorld.txt';
$content = 'Hello World!';
$fh = fopen($filename, "w");
echo fwrite($fh, $content);
fclose($fh);
再看看使用 file_put_contents 是如何寫入文件的
$filename = 'HelloWorld.txt';
$content = 'Hello World!';
file_put_contents($filename, $content);
以上我們可以看出,file_put_contents 一行就代替了 fwrite 三行代碼,
可見其優點: 簡潔、易維護,也不會出現,因 fclose() 忘寫的不嚴密行為。
方法進階
追加寫入
file_put_contents 寫入文件時,默認是從頭開始寫入,如果需要追加內容呢?
在 file_put_contens 方法裡,有個參數 FILE_APPEND,這是追加寫入文件的聲明。
file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND);
鎖定文件
在寫入文件時,為避免與其它人同時操作,通常會鎖定此文件,這就用到了第二個參數: LOCK_EX
file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND|LOCK_EX);
此外,為了確保正確寫入,通常會先判斷該文件是否可寫
if (is_writable('HelloWorld.txt')) {
file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND|LOCK_EX);
}