天天看點

php中file_put_contents()如何換行追加内容?

文章轉自虎書部落格

在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