Thư viện hàm tích hợp sẵn của PHP cung cấp hàm fopen() để mở một tệp hoặc bất kỳ dòng nào khác và trả về "con trỏ tham chiếu" của nó, còn được gọi là "handle".
Hàm fopen() trong PHP tương tự như fopen() trong C, ngoại trừ việc trong C, nó không thể mở một URL.
Hàm fopen() có chữ ký sau −
fopen( string $filename, string $mode, bool $use_include_path = false, ?resource $context = null ): resource|false
Các tham số $filename và $mode là bắt buộc. Dưới đây là giải thích về các tham số −
$filename − Tham số này là một chuỗi đại diện cho tài nguyên cần được mở. Nó có thể là một tệp trong hệ thống tệp cục bộ hoặc trên một máy chủ từ xa với tiền tố scheme://.
$mode − Một chuỗi đại diện cho loại quyền truy cập được cấp cho tệp/tài nguyên.
$use_include_path − Một tham số tùy chọn kiểu Boolean có thể được đặt thành '1' hoặc true nếu bạn muốn tìm kiếm tệp trong include_path.
$context − Một tài nguyên luồng ngữ cảnh.
PHP cho phép một tệp được mở trong các chế độ sau −
Modes | Description |
---|---|
r | Open a file for read only. |
w | Open a file for write only. creates a new file even if it exists. |
a | Open a file in append mode |
x | Creates a new file for write only. |
r+ | Open a file for read/write. |
w+ | Open a file for read/write. creates a new file even if it exists. |
a+ | Open a file for read/write in append mode. |
x+ | Creates a new file for read/write. |
c | Open the file for writing, if it doesn’t exist. However, if it exists, it isn’t truncated (as in w mode). |
c++ | Open the file for read/write, if it doesn’t exist. However, if it exists, it isn’t truncated (as in w mode). |
e | Set close-on-exec flag on the opened file descriptor. Only available in PHP compiled on POSIX.1-2008 conform systems. |
Nếu hàm fopen() được thực thi thành công, nó sẽ trả về một "con trỏ file" hoặc tài nguyên "handle" liên kết với luồng file. Tuy nhiên, nếu nó thất bại, nó sẽ trả về false và phát ra E_WARNING.
$handle = fopen('a.txt, 'r'); var_dump($handle);
Nếu tệp tồn tại trong thư mục hiện tại, sự thành công được hiển thị bởi output −
resource(5) of type (stream)
Nếu không, bạn sẽ nhận được error message −
Warning: fopen(a.txt): Failed to open stream: No such file or directory in a.php on line 2 bool(false)
Các ví dụ sau đây cho thấy các cách sử dụng khác nhau của hàm fopen() −
<?php $handle = fopen("hello.txt", "w"); $handle = fopen("c:/xampp/htdocs/welcome.png", "rb"); $handle = fopen("http://localhost/hello.txt", "r"); ?>
Lưu ý rằng hàm này cũng có thể thành công khi tên tệp là một thư mục. Trong trường hợp đó, bạn có thể cần sử dụng hàm is_dir() để kiểm tra xem đó có phải là một tệp trước khi thực hiện bất kỳ thao tác đọc/ghi nào.
Khi một tệp đã được mở, bạn có thể ghi dữ liệu vào nó với sự trợ giúp của các hàm như fwrite() hoặc fputs() , và đọc dữ liệu từ nó với các hàm fread() và fgets() .
Luôn được khuyến nghị là đóng luồng mở được tham chiếu bởi tay cầm.
fclose($handle);