PHP file_put_contents() 函數是一次性向檔案寫入字串或追加字串內容的最合適選擇。
file_put_contents()
file_put_contents() 函數用於把字串寫入檔案,成功返回寫入到檔案內資料的位元組數,失敗則返回 FALSE
例子:
代碼如下 |
複製代碼 |
<?php echo file_put_contents("test.txt", "This is something."); ?> |
運行該例子,瀏覽器輸出:
18
而 test.txt 檔案(與程式同目錄下)內容則為:This is something.。
提示
•如果檔案不存在,則建立檔案,相當於fopen()函數行為。
•如果檔案存在,預設將清空檔案內的內容,可設定 flags 參數值為 FILE_APPEND 以避免(見下)。
•本函數可安全用於二進位對象。
以追加形式寫入內容
當設定 flags 參數值為 FILE_APPEND 時,表示在已有檔案內容後面追加內容的方式寫入新資料:
代碼如下 |
複製代碼 |
<?php file_put_contents("test.txt", "This is another something.", FILE_APPEND); ?> |
執行程式後,test.txt 檔案內容變為:This is something.This is another something.
file_put_contents() 的行為實際上等於依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。
那麼到底file_put_contents與fwrite區別在哪裡
如下為file_put_contents的執行個體代碼:
代碼如下 |
複製代碼 |
<?php $filename = 'file.txt'; $word = "你好!rnwebkaka"; //雙引號會換行 單引號不換行 file_put_contents($filename, $word); ?> |
同樣的功能使用fwrite的執行個體代碼:
代碼如下 |
複製代碼 |
<?php $filename = 'file.txt'; $word = "你好!rnwebkaka"; //雙引號會換行 單引號不換行 $fh = fopen($filename, "w"); //w從開頭寫入 a追加寫入 echo fwrite($fh, $word); fclose($fh); ?> |
從以上兩個例子看出,其實file_put_contents是fopen、fwrite、fclose三合一的簡化寫法,這對程式碼的最佳化是有好處的,一方面在代碼量上有所減少,另一方面不會出現fclose漏寫的不嚴密代碼,在調試、維護上方便很多。
上述例子裡,file_put_contents是從頭寫入,如果要追加寫入,怎麼辦呢?
在file_put_contents的文法裡,有個參數FILE_APPEND,這是追加寫入的聲明。執行個體代碼如下:
代碼如下 |
複製代碼 |
<?php echo file_put_contents('file.txt', "This is another something.", FILE_APPEND); ?> |
FILE_APPEND就是追加寫入的聲明。在追加寫入時,為了避免其他人同時操作,往往需要鎖定檔案,這時需要加多一個LOCK_EX的聲明,寫法如下:
代碼如下 |
複製代碼 |
<?php echo file_put_contents('file.txt', "This is another something.", FILE_APPEND|LOCK_EX); ?> |
注意,以上代碼中echo輸出到顯示器裡的是寫入檔案字串的長度