當人們建立網站時,資料通常會儲存在資料庫中。然而,有時我們需要將資料儲存在文件中,以便人們以後更容易閱讀或修改。
PHP 附帶了許多用於讀取檔案資料和寫入資料到檔案的函數。我們也可以使用其中一些將資料附加到文件中。在本教程中,您將學習使用 PHP 將資料附加到檔案的兩種不同方法。
file_put_contents()
函數file_put_contents() 函數是使用 PHP 將資料寫入檔案最簡單的方法之一。它接受四個不同的參數來決定其行為。這些參數是:
filename
:我們要寫入資料的檔案位置的路徑。 data
:指定要寫入檔案的資料。它通常是一個字串,但您也可以指定一個陣列或流資源。函數將使用 implode()
自動內爆一維數組的內容,以便將資料寫入檔案。 flags
:控制 file_put_contents()
的行為。您可以在此處設置三個不同的標誌,可以單獨設置,也可以與其他標誌組合設置。可以使用 |
運算子組合不同的標誌。 context
:僅在您讀取或存取流中的內容時向 PHP 提供附加資料時有用。 file_put_contents()
將資料附加到 PHP 檔案file_put_contents()
函數的預設行為是用您提供的任何新資料覆蓋給定檔案的內容。當您想要保留舊資料並添加一些新資料時,這是不可取的。在這種情況下,您可以使用 FILE_APPEND
標誌讓 PHP 知道它應該將資料附加到檔案中最初存在的內容的末尾。
在某些特殊情況下,您可能會同時從多個腳本將資料附加到一個檔案。在這些情況下,建議使用 LOCK_EX
標誌來取得檔案的獨佔鎖定。這有助於防止資料損壞或其他一些意外行為。當您使用此標誌時,其他腳本將等待目前進程完成對檔案的寫入,然後再追加自己的資料。
這是一個範例,其中使用 file_put_contents()
將一些文字附加到現有檔案。
<?php // Original File: Canada is a country in North America. .... bi-national land border. // File Contents After this Line: Canada is a country in North America. .... bi-national land border. Canada's capital is Ottawa, file_put_contents('canada.txt', " Canada's capital is Ottawa,", FILE_APPEND | LOCK_EX); // File Contents After this Line: Canada is a country in North America. .... bi-national land border. Canada's capital is Ottawa, and its three largest metropolitan areas are Toronto, Montreal, and Vancouver. file_put_contents('canada.txt', " and its three largest metropolitan areas are Toronto, Montreal, and Vancouver.", FILE_APPEND | LOCK_EX); ?>
在上面的範例中,我們將一些字串寫入名為 canada.txt 的檔案中,其中包含有關加拿大的資訊。這兩個字串都被一個接一個地附加到文件末尾。
請記住,如果檔案尚不存在,此函數將建立一個檔案。但是,它不會建立不存在的目錄。因此,在開始寫入文件之前檢查文件是否存在可能是個好主意。
fwrite()
將資料寫入 PHP 檔案使用file_put_contents()
函數將資料寫入PHP 檔案類似於依序呼叫fopen()
、fwrite()
和fclose( )
。這意味著對同一個檔案執行多個寫入操作可能效率很低,因為我們不斷地一次又一次地開啟和關閉檔案。
解決此問題的一種方法是自己呼叫這些函數。只需在寫入操作開始時呼叫 fopen()
即可。之後,使用 fwrite()
函數將內容多次寫入檔案。最後,您可以簡單地呼叫 fclose()
來關閉檔案句柄。現在讓我們詳細討論每個步驟。
fopen()
函數接受四個不同的參數,您可以使用這些參數告訴 PHP 應該如何開啟檔案。
filename
:您要開啟的檔案的名稱。 mode
:開啟檔案的模式可以用一個或兩個字元指定。我們想要開啟該文件,然後向其中添加一些文字。若要追加,請使用字元 a
或 a
設定模式。這會將文件指標放置在文件末尾。如果檔案不存在,PHP 也會嘗試建立該檔案。使用a
方式開啟檔案時,也可以讀取檔案內容。 use_include_path
:指示 PHP 也在指定的包含路徑中尋找檔案。預設為 false。 context
:僅在您讀取或存取流中的內容時向 PHP 提供附加資料時有用。 現在檔案已打開,我們可以使用 fwrite()
函數向檔案新增資訊。 fwrite()
需要三個參數:
resource
:這是我們之前使用 fopen()
建立的資源句柄。 string
:要附加到檔案的文字。 length
:可選,用於設定應寫入檔案的最大位元組數。 完成所有寫入操作後,您可以使用 fclose()
函數關閉檔案句柄。
这里是一个示例,向您展示如何使用 fopen()
、fwrite()
和 fclose()
将数据附加到文件。
<?php //open the file $square_file = fopen("squares.txt", "a+"); //write the squares from 1 to 10 for($i = 1; $i <= 10; $i++) { $square = $i*$i; $cube = $square*$i; $line = "Square of $i is: $square.\n"; fwrite($square_file, $line); } //read the first line of the file and echo fseek($square_file, 0); echo fgets($square_file); //close the file fclose($square_file); ?>square.txt的内容
Square of 1 is: 1. Square of 2 is: 4. Square of 3 is: 9. Square of 4 is: 16. Square of 5 is: 25. Square of 6 is: 36. Square of 7 is: 49. Square of 8 is: 64. Square of 9 is: 81. Square of 10 is: 100.
在本例中,我们将数字 1 到 10 的平方写入名为 square.txt 的文件中。我们在 a+
模式下使用 fopen()
函数打开它,这意味着我们还可以从文件中读取内容以及附加我们自己的内容。每次 for 循环迭代时,都会将包含 $i
及其平方的当前值的新行附加到我们的文件中。
有一些函数,例如 fread()
和 fgets()
,您可以使用它们来读取文件中写入的内容。但是,您通常需要使用 fseek()
将文件指针放置在所需位置以按预期读取数据。循环结束后,我们转到文件的开头并使用 fgets()
读取其第一行。
最后,我们通过调用函数 fclose()
关闭文件句柄。
在本教程中,我们学习了使用 PHP 将数据附加到文件的两种不同方法。使用 file_put_contents()
函数可以更方便地将数据写入文件。但是,当您必须对一个文件执行多次写入操作时,使用 fwrite()
会更有效。使用 fopen()
打开文件来附加数据还可以让您选择通过将文件指针移动到所需位置来读取其内容。
以上是PHP教學:如何使用PHP追加檔案內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!