Hàm fgets() trong PHP
Trần Thị Vân
- 1252
- 09/08/2025
Chức năng của Hàm fgets() trong PHP
Hàm fgets() trong PHP dùng để đọc dòng đầu tiên của một tệp hoặc đọc hết tệp hoặc đọc tệp có giới hạn ký tự.
Code Hàm fgets() trong PHP
Code Hàm fgets() trong PHP lấy dòng đầu tiên
<?php
// Quy định chế độ đọc, chuyển chế độ đọc của file ở trạng thái mở
$filedangmo = fopen("thumuctest/test.txt", "r");
if ($filedangmo) {
// Lấy dòng đầu tiên
echo fgets($filedangmo);
// Kết quả: Hàm fgets() trong PHP 1
// Đóng trạng thái mở của file
fclose($filedangmo);
}
?>
Kết quả:
Hàm fgets() trong PHP 1
Code Hàm fgets() trong PHP lấy tất cả dòng
<?php
// Quy định chế độ đọc, chuyển chế độ đọc của file ở trạng thái mở
$filedangmo = fopen("thumuctest/test.txt", "r");
if ($filedangmo) {
// Lặp từng dòng
while (($dong = fgets($filedangmo )) !== false) {
// Lấy từng dòng
echo $dong."<br>";
}
// Đóng trạng thái mở của file
fclose($filedangmo);
}
?>
Kết quả:
Hàm fgets() trong PHP 1
Hàm fgets() trong PHP 2
Hàm fgets() trong PHP 3
Hàm fgets() trong PHP 4
Hàm fgets() trong PHP 5
Hàm fgets() trong PHP 6
Hàm fgets() trong PHP 7
Code Hàm fgets() trong PHP giới hạn ký tự
<?php
// Quy định chế độ đọc, chuyển chế độ đọc của file ở trạng thái mở
$filedangmo = fopen("thumuctest/test.txt", "r");
if ($filedangmo) {
// Lặp từng dòng, và quy định số byte cần đọc trong file
while (($dong = fgets($filedangmo, 4096)) !== false) {
// Lấy từng dòng
echo $dong."<br>";
}
// Đóng trạng thái mở của file
fclose($filedangmo);
}
?>
Kết quả:
Hàm fgets() trong PHP 1
Hàm fgets() trong PHP 2
Hàm fgets() trong PHP 3
Hàm fgets() trong PHP 4
Hàm fgets() trong PHP 5
Hàm fgets() trong PHP 6
Hàm fgets() trong PHP 7
Những lưu ý khi sử dụng hàm fgets() trong PHP
Khi sử dụng fgets() để đọc dữ liệu từ file, việc gọi hàm đúng cú pháp mới chỉ là bước đầu. Để chương trình hoạt động ổn định, cần kiểm tra file trước khi đọc, xử lý trường hợp không lấy được dữ liệu và đóng tài nguyên sau khi hoàn tất.
Kiểm tra file trước khi đọc bằng fgets()
Trước khi gọi fgets(), nên kiểm tra kết quả mở file bằng fopen(). Nếu file không tồn tại, không có quyền truy cập hoặc đường dẫn không chính xác, việc tiếp tục đọc có thể khiến chương trình phát sinh cảnh báo hoặc xử lý sai dữ liệu.
Một cách đơn giản là kiểm tra giá trị trả về của fopen() trước khi truyền biến file vào fgets():
<?php
$file = fopen("data.txt", "r");
if ($file !== false) {
$line = fgets($file);
echo $line;
fclose($file);
}
?>
Cách kiểm tra này giúp tách rõ hai bước: mở tài nguyên thành công và bắt đầu đọc dữ liệu. Với các chương trình xử lý file quan trọng, có thể bổ sung thông báo lỗi phù hợp thay vì để quá trình thực thi tiếp tục khi file chưa được mở.
Xử lý kết quả khi fgets() trả về false
fgets() không phải lúc nào cũng trả về một chuỗi. Khi không thể đọc thêm dữ liệu, hàm có thể trả về false. Vì vậy, không nên mặc định kết quả nhận được luôn là nội dung của một dòng.
Việc kiểm tra kết quả đặc biệt cần thiết khi file có thể rỗng hoặc quá trình đọc gặp vấn đề. Có thể dùng phép so sánh nghiêm ngặt để phân biệt false với một chuỗi hợp lệ:
<?php
$line = fgets($file);
if ($line !== false) {
echo $line;
} else {
echo "Không thể đọc dữ liệu.";
}
?>
Nên dùng !== false thay vì chỉ kiểm tra giá trị theo kiểu đúng hoặc sai. Cách này giúp chương trình xác định chính xác kết quả của hàm và tránh xử lý nhầm dữ liệu trong những trường hợp đặc biệt.
Kết hợp fgets() với feof() khi đọc file
Khi cần đọc lần lượt toàn bộ các dòng, fgets() thường được sử dụng cùng feof(). Trong đó, fgets() đảm nhiệm việc lấy dữ liệu từng dòng, còn feof() cho biết con trỏ file đã đi đến cuối hay chưa.
Cách kết hợp này phù hợp với những file có nhiều dòng vì chương trình có thể xử lý từng phần dữ liệu thay vì phải tải toàn bộ nội dung vào bộ nhớ cùng lúc.
<?php
$file = fopen("data.txt", "r");
if ($file !== false) {
while (!feof($file)) {
$line = fgets($file);
if ($line !== false) {
echo $line;
}
}
fclose($file);
}
?>
Trong thực tế, cần lưu ý rằng feof() chỉ xác nhận đã chạm cuối file sau khi một thao tác đọc được thực hiện. Vì vậy, nên kiểm tra kết quả của fgets() thay vì chỉ dựa vào feof() để quyết định dữ liệu có hợp lệ hay không.
Đóng file sau khi sử dụng fgets()
Sau khi hoàn tất việc đọc, nên gọi fclose() để đóng file. Điều này giải phóng tài nguyên mà chương trình đã sử dụng và giúp tránh việc mở quá nhiều file trong những tác vụ xử lý dữ liệu lớn.
<?php
$file = fopen("data.txt", "r");
if ($file !== false) {
while (($line = fgets($file)) !== false) {
echo $line;
}
fclose($file);
}
?>
Đặt fclose() sau phần xử lý dữ liệu giúp quy trình làm việc với file rõ ràng hơn: mở file, đọc dữ liệu, kiểm tra kết quả và cuối cùng đóng tài nguyên. Đây là thói quen nên duy trì ngay cả khi chương trình chỉ đọc một file nhỏ.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm fgets() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *