在PHP的一些應(yīng)用中需要寫日志或者記錄一些信息,可以使用fopen(),fwrite(),fclose()這些操作。也可使用file_get_contents()和file_put_contents()。
file_put_contents()寫文件。默認(rèn)的是重新寫文件,也就是會(huì)替換原先的內(nèi)容。追加的話使用參數(shù)FILE_APPEND
以追加形式寫入內(nèi)容 當(dāng)設(shè)置flags參數(shù)值為FILE_APPEND時(shí),表示在已有文件內(nèi)容后面追加內(nèi)容的方式寫入新數(shù)據(jù)
file_put_contents() 定義和用法
file_put_contents() 函數(shù)把一個(gè)字符串寫入文件中。
該函數(shù)訪問文件時(shí),遵循以下規(guī)則:
如果設(shè)置了 FILE_USE_INCLUDE_PATH,那么將檢查 *filename* 副本的內(nèi)置路徑
如果文件不存在,將創(chuàng)建一個(gè)文件
打開文件
如果設(shè)置了 LOCK_EX,那么將鎖定文件
如果設(shè)置了 FILE_APPEND,那么將移至文件末尾。否則,將會(huì)清除文件的內(nèi)容
向文件中寫入數(shù)據(jù)
關(guān)閉文件并對(duì)所有文件解鎖
如果成功,該函數(shù)將返回寫入文件中的字符數(shù)。如果失敗,則返回 False。
file_put_contents() 語法
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
參數(shù) 描述
file 必需。規(guī)定要寫入數(shù)據(jù)的文件。如果文件不存在,則創(chuàng)建一個(gè)新文件。
data 必需。規(guī)定要寫入文件的數(shù)據(jù)??梢允亲址?、數(shù)組或數(shù)據(jù)流。
mode 可選。規(guī)定如何打開/寫入文件??赡艿闹担篎ILE_USE_INCLUDE_PATH、FILE_APPEND、LOCK_EX
context 可選。規(guī)定文件句柄的環(huán)境。context 是一套可以修改流的行為的選項(xiàng)。
MODE
FILE_USE_INCLUDE_PATH://檢查 filename 副本的內(nèi)置路徑
FILE_APPEND://在文件末尾以追加的方式寫入數(shù)據(jù)
LOCK_EX://對(duì)文件上鎖
內(nèi)容換行以及提示
FILE_APPEND 避免刪除文件中已存在的內(nèi)容。
echo file_put_contents("./test.txt", 'hello');
//以上實(shí)例執(zhí)行輸出結(jié)果為:6
接下來我們向文件 sites.txt 追加內(nèi)容:
很多時(shí)候記錄日志需要換行。不建議使用\r\n,因?yàn)椋?/p>
在windows中\(zhòng)r\n是換行
在Mac中\(zhòng)r是換行
在Liunx中\(zhòng)n是換行
但是PHP提供了一個(gè)常量來匹配不同的操作系統(tǒng),即:PHP_EOL
// 向文件追加寫入內(nèi)容
$site = PHP_EOL."world";
// 使用 FILE_APPEND 標(biāo)記,可以在文件末尾追加內(nèi)容
// LOCK_EX 標(biāo)記可以防止多人同時(shí)寫入
file_put_contents('./tset.txt', $site, FILE_APPEND | LOCK_EX);
執(zhí)行成功后,打開 tset.txt 文件,內(nèi)容為:
hello
world