Trong bài này, chúng ta sẽ tìm hiểu về cách create và write file trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.
1. Tạo file với hàm fopen() trong PHP
Hàm fopen()
giúp mở một file và đưa file đó vào stream để chuẩn bị đọc/ghi dữ liệu. Cú pháp:
fopen(
string $filename,
string $mode,
bool $use_include_path = false,
?resource $context = null
): resource|false
Với các $mode là ‘w’, ‘w+’, ‘a’, ‘a+’, ‘x’, ‘x+’ thì hàm fopen()
giúp tạo một file mới khi file chưa tồn tại. Các bạn có thể tìm hiểu kỹ hơn cách sử dụng hàm fopen()
tại Mở file với hàm fopen() trong PHP.
2. Ghi file với hàm fwrite() trong PHP
Hàm fwrite()
được sử dụng để ghi dữ liệu vào file khi đã mở file với hàm fopen()
. Cú pháp:
fwrite(resource $stream, string $data, ?int $length = null): int|false
Trong đó,
– $stream là stream đọc file được mở bởi hàm fopen().
– $data là chuỗi (string) dữ liệu được ghi vào file.
– $length là số byte muốn ghi vào file.
Kết quả trả về của hàm fwrite()
là số byte ghi được hoặc false nếu ghi file bị lỗi.
<?php
$myfile = fopen("gochocit.txt", "w") or die("Unable to open file!");
$txt = "Hello all, welcome to gochocit.com!\n";
fwrite($myfile, $txt);
$txt = "Very happy to see you visit gochocit.com.\n";
fwrite($myfile, $txt);
$txt = "Hope it might be useful for you!\n";
fwrite($myfile, $txt);
fclose($myfile);
?>
Khi mở file bằng hàm fopen()
với chế độ “w” thì dữ liệu ghi vào file sẽ ghi đè (overwriting) lên dữ liệu cũ nếu file đã tồn tại. Nếu sử dụng chế độ “a” thì dữ liệu ghi vào file sẽ được ghi nối tiếp vào file.
3. Tạo và ghi file với hàm file_put_contents() trong PHP
Hàm file_put_contents()
giúp ghi dữ liệu vào file. Nếu file không tồn tại thì file mới sẽ được tạo. Nếu file tồn tại thì dữ liệu trong file sẽ bị sẽ bị ghi đè. Nếu muốn ghi nối tiếp vào file thì sử dụng $flag = FILE_APPEND
.
Hàm này có chức năng giống với việc gọi hàm fopen()
, fwrite()
và fclose()
liên tiếp để ghi dữ liệu vào một file. Cú pháp:
file_put_contents(
string $filename,
mixed $data,
int $flags = 0,
?resource $context = null
): int|false
Trong đó,
– $filename là đường dẫn của file cần ghi dữ liệu.
– $data là dữ liệu cần ghi vào file. $data có thể là string, array hoặc stream resource.
– $flag là các cờ thể hiện chế độ ghi dữ liệu của hàm file_put_contents(). Có thể kết hợp các flag với nhau bằng toán tử OR ( | ).Flag Mô tả FILE_USE_INCLUDE_PATH Có thể tìm file trong include_path. FILE_APPEND Nếu file đã tồn tại, nối tiếp dữ liệu vào file thay vì phải ghi đè file. LOCK_EX Khóa file nếu đang ghi dữ liệu.
– $context là resource được tạo bởi hàm stream_context_create().
Kết quả trả về của hàm file_put_contents()
là số byte được ghi vào file hoặc false nếu ghi file bị lỗi.
Ví dụ ghi đè dữ liệu vào file gochocit.txt
<?php
$file = 'gochocit.txt';
$data = "Hello all!";
file_put_contents($file, $data);
?>
Ví dụ nối dữ liệu vào file gochocit.txt
<?php
$file = 'gochocit.txt';
$data = "Hello all!";
file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
?>
Trong ví dụ trên, $flag là FILE_APPEND | LOCK_EX
. $flag này có nghĩa là nối dữ liệu vào file gochocit.txt
và khóa file trong khi ghi dữ liệu.