Trong bài này, chúng ta sẽ tìm hiểu về cách open và read 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. Mở 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
Trong đó,
– $filename là đường dẫn của của file cần mở.
– $mode là các chế độ khi mở file.
– $use_include_path: nếu được đặt là ‘1’ hoặc true thì sẽ tìm file để mở trong include_path.
– $context là một context stream.
Các chế độ (mode) khi mở file với fopen()
Chế độ | Mô tả |
r | Mở file và chỉ đọc. |
w | Mở file và chỉ ghi dữ liệu. Xóa nội dung của file rồi ghi dữ liệu hoặc tạo một file mới nếu file không tồn tại. |
a | Mở file và chỉ ghi dữ liệu. Nếu file đã tồn tại thì ghi tiếp dữ liệu vào file. Nều file không tồn tại thì tạo một file mới. |
x | Tạo một file mới và chỉ ghi dữ liệu. Trả về FALSE và một error nếu file đã tồn tại. |
r+ | Mở file để đọc/ghi dữ liệu. |
w+ | Mở file để đọc/ghi dữ liệu. Xóa nội dung của file khi đọc/ghi dữ liệu hoặc tạo một file mới nếu file không tồn tại. |
a+ | Mở file để đọc/ghi dữ liệu. Nếu file đã tồn tại thì đọc/ghi tiếp dữ liệu vào file. Nều file không tồn tại thì tạo một file mới. |
x+ | Tạo một file mới để đọc/ghi dữ liệu. Trả về FALSE và một error nếu file đã tồn tại. |
Giả sử, chúng ta có file gochocit.txt
nằm cùng thư mục với file code index.php
của PHP với nội dung như sau:
Hello all, welcome to gochocit.com!
Very happy to see you visit gochocit.com.
Hope it might be useful for you!
Đoạn code bên dưới giúp mở và đọc file gochocit.txt
.
<?php
$myfile = fopen("gochocit.txt", "r") or die("Unable to open file!");
echo fread($myfile, filesize("gochocit.txt"));
fclose($myfile);
?>
Kết quả
Hello all, welcome to gochocit.com! Very happy to see you visit gochocit.com. Hope it might be useful for you!
Sau khi mở file với hàm fopen()
, chúng ta có thể đọc/ghi file. Nếu không sử dụng nữa thì nên đóng file với hàm fclose()
.
2. Các hàm đọc file trong PHP
2.1. Đọc file với hàm readfile() trong PHP
Hàm readfile()
giúp đọc một file và ghi file đó vào output buffer. Kết quả trả về của hàm readfile()
là số byte đọc được từ file. Nếu không đọc được file thì trả về false.
<?php
$numberofbytes = readfile("gochocit.txt");
echo "<br>Number of bytes read from the file: ".$numberofbytes;
?>
Kết quả
Hello all, welcome to gochocit.com! Very happy to see you visit gochocit.com. Hope it might be useful for you!
Number of bytes read from the file: 112
2.2. Đọc file với hàm fread() trong PHP
Hàm fread()
giúp đọc file khi đã mở file với hàm fopen()
. Cú pháp của hàm fread()
:
fread(resource $stream, int $length): string|false
Trong đó,
- $stream là stream của file đã mở (open) với hàm fopen().
- $length là số byte sẽ được đọc.
Hàm fread()
trả về chuỗi (string) đọc được hoặc trả về false nếu đọc file bị lỗi.
<?php
$myfile = fopen("gochocit.txt", "r") or die("Unable to open file!");
echo fread($myfile, filesize("gochocit.txt"));
fclose($myfile);
?>
Kết quả
Hello all, welcome to gochocit.com! Very happy to see you visit gochocit.com. Hope it might be useful for you!
2.3. Đọc file với hàm fgets() trong PHP
Hàm fgets()
được sử dụng để đọc một dòng (single line) từ file.
<?php
$myfile = fopen("gochocit.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
Kết quả
Hello all, welcome to gochocit.com!
2.4. Đọc file với hàm feof() trong PHP
Hàm feof()
kiểm tra xem đến cuối file “end-of-file” (EOF) hay chưa. Hàm feof()
giúp lặp qua dữ liệu trong file có số dòng không xác định.
<?php
$myfile = fopen("gochocit.txt", "r") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
Kết quả
Hello all, welcome to gochocit.com!
Very happy to see you visit gochocit.com.
Hope it might be useful for you!
2.5. Đọc file với hàm fgetc() trong PHP
Hàm fgetc()
được sử dụng để đọc một ký tự đơn lẻ từ một file.
<?php
$myfile = fopen("gochocit.txt", "r") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
echo fgetc($myfile)." ";
}
fclose($myfile);
?>
Kết quả
H e l l o a l l , w e l c o m e t o g o c h o c i t . c o m ! V e r y h a p p y t o s e e y o u v i s i t g o c h o c i t . c o m . H o p e i t m i g h t b e u s e f u l f o r y o u !
Ở bài này, chúng ta đã cùng tìm hiểu nhiều hàm đọc (read) file trong PHP. Tùy vào yêu cầu mà chúng ta sử dụng hàm nào cho hợp lý.