Hàm fwrite
Hàm fwrite
trong PHP được dùng để ghi dữ liệu dạng văn bản nên tập tin.
Tương tự như fread, hàm fwrite
được sử dụng kết hợp với fopen. Tuy nhiên khi sử dụng fopen
bạn cần quy định chế độ mở là viết đè w
hoặc viết thêm vào a
thay vì đọc từ tập tin r
:
Viết Đè Dữ Liệu Lên Tập Tin
Ví dụ dưới đây sẽ thực hiện việc viết đè hai dòng lên tập tin /tmp/text.txt
sử dụng hàm fwrite
:
$fp = fopen("/tmp/text.txt", "w");
fwrite($fp, "Dòng đầu tiên");
fwrite($fp, "Dòng thứ hai");
Nếu tập tin text.txt
trước đó đã có nội dung thì hàm fwrite
ở trên sẽ xoá toàn bộ nội dung trước đó và thay bởi nội dung mới.
Viết Nối Tiếp Dữ Liệu Lên Tập Tin
Ví dụ dưới đây sẽ thực hiện việc thêm hai dòng vào cuối tập tin /tmp/text.txt
sử dụng hàm fwrite
:
$fp = fopen("/tmp/text.txt", "a");
fwrite($fp, "Dòng đầu tiên");
fwrite($fp, "Dòng thứ hai");
Nếu tập tin text.txt
trước đó đã có nội dung thì hàm fwrite
trên sẽ không xoá toàn bộ nội dung trước đó mà chỉ thêm nội dung mới vào phía cuối tập tin.
Giá Trị Trả Về
Hàm fwrite
sẽ trả về số lượng bytes đã viết lên tập tin nếu quá trình viết dữ liệu lên tập tin kết thúc thành công mà không gặp lỗi:
$fp = fopen("/tmp/text.txt", "a");
$bytesCount = fwrite($fp, "abcdef");
echo $bytesCount;
Kết quả trả về khi chạy đoạn mã trên là 5 bytes dữ liệu (mỗi bytes tương ứng một ký tự không dấu).
Trong một số trường hợp như thư mục chứa tập tin muốn viết không tồn tại hay PHP không có quyền viết lên tập tin thì hàm fwrite
sẽ trả giá trị FALSE
.
$fp = fopen("/tmp/year_2020/text.txt", "a");
$bytesCount = fwrite($fp, "12345");
var_dump($bytesCount);
Trả về kết quả:
bool(false)
Trường hợp hệ thống báo lỗi của PHP trên máy bạn được cài đặt để hiển thị các lỗi cảnh báo bạn sẽ thấy kết quả tương tự như sau:
PHP Warning: fopen(/tmp/year_2020/text.txt): failed to open stream: No such file or directory in /private/tmp/test.php on line 3
Warning: fopen(/tmp/year_2020/text.txt): failed to open stream: No such file or directory in /private/tmp/test.php on line 3
PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in /private/tmp/test.php on line 4
Warning: fwrite() expects parameter 1 to be resource, boolean given in /private/tmp/test.php on line 4
bool(false)