文章轉自虎書部落格
在PHP的一些應用中需要寫日志或者記錄一些資訊,可以使用fopen(),fwrite(),fclose()這些操作。也可使用file_get_contents()和file_put_contents()。
file_put_contents()寫檔案。預設的是重新寫檔案,也就是會替換原先的内容。追加的話使用參數FILE_APPEND
以追加形式寫入内容 當設定flags參數值為FILE_APPEND時,表示在已有檔案内容後面追加内容的方式寫入新資料
file_put_contents() 定義和用法
file_put_contents() 函數把一個字元串寫入檔案中。
該函數通路檔案時,遵循以下規則:
1、如果設定了 FILE_USE_INCLUDE_PATH,那麼将檢查 *filename* 副本的内置路徑
2、如果檔案不存在,将建立一個檔案
3、打開檔案
4、如果設定了 LOCK_EX,那麼将鎖定檔案
5、如果設定了 FILE_APPEND,那麼将移至檔案末尾。否則,将會清除檔案的内容
6、向檔案中寫入資料
7、關閉檔案并對所有檔案解鎖
如果成功,該函數将傳回寫入檔案中的字元數。如果失敗,則傳回 False。
file_put_contents() 文法
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
參數 | 描述 |
---|---|
file | 必需。規定要寫入資料的檔案。如果檔案不存在,則建立一個新檔案。 |
data | 必需。規定要寫入檔案的資料。可以是字元串、數組或資料流。 |
mode | 可選。規定如何打開/寫入檔案。可能的值:FILE_USE_INCLUDE_PATH、FILE_APPEND、LOCK_EX |
context | 可選。規定檔案句柄的環境。context 是一套可以修改流的行為的選項。 |
#####MODE
- FILE_USE_INCLUDE_PATH://檢查 filename 副本的内置路徑
- FILE_APPEND://在檔案末尾以追加的方式寫入資料
- LOCK_EX://對檔案上鎖
内容換行以及提示
FILE_APPEND 避免删除檔案中已存在的内容。
echo file_put_contents("./test.txt", 'hello');
//以上執行個體執行輸出結果為:6
接下來我們向檔案 sites.txt 追加内容:
很多時候記錄日志需要換行。不建議使用\r\n,因為:
- 在windows中\r\n是換行
- 在Mac中\r是換行
- 在Liunx中\n是換行
但是PHP提供了一個常量來比對不同的作業系統,即:PHP_EOL
// 向檔案追加寫入内容
$site = PHP_EOL."world";
// 使用 FILE_APPEND 标記,可以在檔案末尾追加内容
// LOCK_EX 标記可以防止多人同時寫入
file_put_contents('./tset.txt', $site, FILE_APPEND | LOCK_EX);
執行成功後,打開 tset.txt 檔案,内容為:
hello
world
原文位址:http://www.tigerbook.cn/article-124.html