Rumah >pembangunan bahagian belakang >tutorial php >Tutorial PHP: Cara Menambah Kandungan Fail Menggunakan PHP
Apabila orang membuat laman web, data biasanya disimpan dalam pangkalan data. Namun, kadangkala kita perlu menyimpan data dalam fail supaya lebih mudah untuk orang membaca atau mengubah suainya nanti.
PHP datang dengan banyak fungsi untuk membaca dan menulis data daripada fail. Kami juga boleh menggunakan sebahagian daripadanya untuk menambahkan data pada fail. Dalam tutorial ini, anda akan mempelajari dua cara berbeza untuk menambahkan data pada fail menggunakan PHP.
file_put_contents()
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()
Fungsi file_put_contents() ialah salah satu cara paling mudah untuk menulis data ke fail menggunakan PHP. Ia menerima empat parameter berbeza untuk menentukan kelakuannya. Parameter ini ialah:
filename
: Laluan ke lokasi fail di mana kami ingin menulis data. data
: Tentukan data yang akan ditulis pada fail. Ia biasanya rentetan, tetapi anda juga boleh menentukan tatasusunan atau sumber aliran. Fungsi ini secara automatik akan meletupkan kandungan tatasusunan satu dimensi menggunakan implode()
untuk menulis data pada fail. flags
: Kawal kelakuan file_put_contents()
. Anda boleh menetapkan tiga bendera berbeza di sini, sama ada secara individu atau digabungkan dengan bendera lain. Bendera yang berbeza boleh digabungkan menggunakan operator |
. konteks
: Hanya berguna jika anda memberikan data tambahan kepada PHP apabila anda membaca atau mengakses kandungan dalam strim. file_put_contents()
untuk menambahkan data pada fail PHP
Tingkah laku lalai fungsi 🎜file_put_contents()
ialah untuk menulis ganti kandungan fail yang diberikan dengan mana-mana data baharu yang anda berikan. Ini tidak digalakkan apabila anda ingin menyimpan data lama dan menambah beberapa data baharu. Dalam kes ini, anda boleh menggunakan bendera FILE_APPEND
untuk memberitahu PHP bahawa ia harus menambahkan data pada penghujung perkara yang asalnya terdapat dalam fail. 🎜
🎜Dalam beberapa kes khas, anda mungkin menambahkan data daripada berbilang skrip ke fail pada masa yang sama. Dalam kes ini, adalah disyorkan untuk menggunakan bendera LOCK_EX
untuk mendapatkan kunci eksklusif pada fail. Ini membantu mengelakkan rasuah data atau beberapa tingkah laku lain yang tidak dijangka. Apabila anda menggunakan bendera ini, skrip lain akan menunggu proses semasa selesai menulis pada fail sebelum menambahkan data mereka sendiri. 🎜
🎜Berikut ialah contoh di mana file_put_contents()
digunakan untuk menambahkan beberapa teks pada fail sedia ada. 🎜
<?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); ?>🎜Dalam contoh di atas, kami sedang menulis beberapa rentetan ke dalam fail yang dipanggil canada.txt yang mengandungi maklumat tentang Kanada. Kedua-dua rentetan dilampirkan pada hujung fail satu demi satu. 🎜 🎜Ingat, fungsi ini akan mencipta fail jika ia belum wujud lagi. Walau bagaimanapun, ia tidak mencipta direktori yang tidak wujud. Jadi mungkin idea yang baik untuk menyemak sama ada fail itu wujud sebelum mula menulis kepadanya. 🎜 🎜Gunakan
fwrite()
untuk menulis data ke fail PHP
🎜Menggunakan fungsi file_put_contents()
untuk menulis data ke fail PHP adalah serupa dengan memanggil fopen()
, fwrite()
dan fclose dalam urutan ()
. Ini bermakna bahawa melakukan beberapa penulisan pada fail yang sama boleh menjadi tidak cekap kerana kami sentiasa membuka dan menutup fail itu berulang kali. 🎜
🎜Salah satu cara untuk menyelesaikan masalah ini adalah dengan memanggil sendiri fungsi ini. Cuma panggil fopen()
pada permulaan operasi tulis. Selepas itu, gunakan fungsi fwrite()
untuk menulis kandungan ke fail beberapa kali. Akhir sekali, anda boleh memanggil fclose()
untuk menutup pemegang fail. Sekarang mari kita bincangkan setiap langkah secara terperinci. 🎜
Fungsi 🎜fopen()
menerima empat parameter berbeza yang boleh anda gunakan untuk memberitahu PHP cara fail harus dibuka. 🎜
filename
: Nama fail yang anda ingin buka. mod
: Mod untuk membuka fail boleh ditentukan dengan satu atau dua aksara. Kami mahu membuka fail ini dan menambah beberapa teks padanya. Untuk menambahkan, tetapkan corak menggunakan aksara a
atau a+
. Ini meletakkan penuding fail pada penghujung fail. PHP juga akan cuba mencipta fail jika ia tidak wujud. Apabila menggunakan kaedah a+
untuk membuka fail, anda juga boleh membaca kandungan fail. use_include_path
: Mengarahkan PHP untuk turut mencari fail dalam laluan termasuk yang ditentukan. Lalai adalah palsu. konteks
: Hanya berguna jika anda memberikan data tambahan kepada PHP apabila anda membaca atau mengakses kandungan dalam strim. fwrite()
. fwrite()
memerlukan tiga parameter: 🎜
resource
: Ini ialah pemegang sumber yang kami buat sebelum ini menggunakan fopen()
. string
: Teks untuk ditambahkan pada fail. panjang
: Pilihan, digunakan untuk menetapkan bilangan bait maksimum yang harus ditulis pada fail. 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()
打开文件来附加数据还可以让您选择通过将文件指针移动到所需位置来读取其内容。
Atas ialah kandungan terperinci Tutorial PHP: Cara Menambah Kandungan Fail Menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!