PHP Mở/Tải/Ghi tệp

Trong phần này, chúng tôi sẽ hướng dẫn bạn cách mở, đọc và đóng tệp trên máy chủ.

PHP Mở Tệp - fopen()

Cách mở tệp tốt hơn là thông qua hàm fopen(). Hàm này cung cấp cho bạn nhiều tùy chọn hơn so với hàm readfile().

Trong khóa học này, chúng ta sẽ sử dụng tệp văn bản "webdictionary.txt":

AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language

Tham số đầu tiên của fopen() chứa tên tệp cần mở, tham số thứ hai quy định mô hình mở tệp. Nếu hàm fopen() không thể mở tệp được chỉ định, ví dụ sau sẽ tạo ra một đoạn thông báo:

Ví dụ

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile, filesize("webdictionary.txt"));
fclose($myfile);
?>

Chạy ví dụ

Lưu ý:Chúng ta sẽ học thêm về hàm fread() và fclose() tiếp theo.

Tệp sẽ được mở theo một trong các mô hình sau:

Mô hình Mô tả
r Mở tệp để đọc. Điểm chỉ trong đầu tệp.
w Mở tệp để ghi. Xóa nội dung tệp hoặc tạo một tệp mới nếu nó không tồn tại. Điểm chỉ trong đầu tệp.
a Mở tệp để ghi. Dữ liệu hiện có trong tệp sẽ được giữ lại. Điểm chỉ trong cuối tệp. Tạo tệp mới nếu nó không tồn tại.
x Tạo tệp mới để ghi. Trả về FALSE và thông báo lỗi nếu tệp đã tồn tại.
r+ Mở tệp để đọc/ghi, điểm chỉ trong đầu tệp.
w+ Mở tệp để đọc/ghi. Xóa nội dung tệp hoặc tạo tệp mới nếu nó không tồn tại. Điểm chỉ trong đầu tệp.
a+ Mở tệp để đọc/ghi. Dữ liệu hiện có trong tệp sẽ được giữ lại. Điểm chỉ trong cuối tệp. Tạo tệp mới nếu nó không tồn tại.
x+ Tạo tệp mới để đọc/ghi. Trả về FALSE và thông báo lỗi nếu tệp đã tồn tại.

PHP đọc tệp - fread()

Hàm fread() đọc tệp đã mở.

Tham số đầu tiên của fread() chứa tên tệp cần đọc, tham số thứ hai quy định số byte tối đa cần đọc.

Mã PHP sau đây đọc tệp "webdictionary.txt" đến cuối:

fread($myfile, filesize("webdictionary.txt"));

PHP đóng tệp - fclose()

Hàm fclose() được sử dụng để đóng tệp đã mở.

Ghi chú:Đóng tất cả các tệp sau khi sử dụng là một thói quen lập trình tốt. Bạn không muốn các tệp mở chiếm tài nguyên máy chủ của bạn.

fclose() cần tên tệp cần đóng (hoặc biến chứa tên tệp):

<?php
$myfile = fopen("webdictionary.txt", "r");
// Một số mã cần được thực thi...
fclose($myfile);
?>

PHP đọc dòng từ tệp - fgets()

Hàm fgets() được sử dụng để đọc một dòng từ tệp.

Dưới đây là dòng đầu tiên của tệp "webdictionary.txt":

Ví dụ

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>

Chạy ví dụ

Ghi chú:Sau khi gọi hàm fgets(), con trỏ tệp sẽ di chuyển đến dòng tiếp theo.

PHP Kiểm tra cuối tệp - feof()

Hàm feof() kiểm tra xem đã đến cuối tệp (EOF) hay chưa.

feof() rất hữu ích để duyệt qua dữ liệu có độ dài không xác định.

Dưới đây là ví dụ về việc đọc tệp "webdictionary.txt" theo dòng cho đến cuối tệp:

Ví dụ

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Xuất dòng đơn đến cuối tệp
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>

Chạy ví dụ

PHP Đọc ký tự đơn - fgetc()

Hàm fgetc() được sử dụng để đọc ký tự đơn từ tệp.

Dưới đây là ví dụ về việc đọc tệp "webdictionary.txt" theo ký tự cho đến cuối tệp:

Ví dụ

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Xuất ký tự đơn đến cuối tệp
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

Chạy ví dụ

Ghi chú:Sau khi gọi hàm fgetc(), con trỏ tệp sẽ di chuyển đến ký tự tiếp theo.

PHP Tài liệu tham khảo Filesystem

Để có tài liệu tham khảo đầy đủ về hệ thống tệp PHP, hãy truy cập tài liệu do CodeW3C.com cung cấp PHP Tài liệu tham khảo Filesystem.