Tạo (create) và ghi (write) file trong PHP

Đây là bài 29/39 bài của series môn học Lập trình Web PHP

Trong bài này, chúng ta sẽ tìm hiểu về cách create và write 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. Tạo 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

Với các $mode‘w’, ‘w+’, ‘a’, ‘a+’, ‘x’, ‘x+’ thì hàm fopen() giúp tạo một file mới khi file chưa tồn tại. Các bạn có thể tìm hiểu kỹ hơn cách sử dụng hàm fopen() tại Mở file với hàm fopen() trong PHP.

2. Ghi file với hàm fwrite() trong PHP

Hàm fwrite() được sử dụng để ghi dữ liệu vào file khi đã mở file với hàm fopen(). Cú pháp:

fwrite(resource $stream, string $data, ?int $length = null): int|false

Trong đó,

$stream là stream đọc file được mở bởi hàm fopen().

$data là chuỗi (string) dữ liệu được ghi vào file.

$length là số byte muốn ghi vào file.

Kết quả trả về của hàm fwrite() là số byte ghi được hoặc false nếu ghi file bị lỗi.

<?php
$myfile = fopen("gochocit.txt", "w") or die("Unable to open file!");
$txt = "Hello all, welcome to gochocit.com!\n";
fwrite($myfile, $txt);
$txt = "Very happy to see you visit gochocit.com.\n";
fwrite($myfile, $txt);
$txt = "Hope it might be useful for you!\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

Khi mở file bằng hàm fopen() với chế độ “w” thì dữ liệu ghi vào file sẽ ghi đè (overwriting) lên dữ liệu cũ nếu file đã tồn tại. Nếu sử dụng chế độ “a” thì dữ liệu ghi vào file sẽ được ghi nối tiếp vào file.

3. Tạo và ghi file với hàm file_put_contents() trong PHP

Hàm file_put_contents() giúp ghi dữ liệu vào file. Nếu file không tồn tại thì file mới sẽ được tạo. Nếu file tồn tại thì dữ liệu trong file sẽ bị sẽ bị ghi đè. Nếu muốn ghi nối tiếp vào file thì sử dụng $flag = FILE_APPEND.

Hàm này có chức năng giống với việc gọi hàm fopen(), fwrite()fclose() liên tiếp để ghi dữ liệu vào một file. Cú pháp:

file_put_contents(
    string $filename,
    mixed $data,
    int $flags = 0,
    ?resource $context = null
): int|false

Trong đó,

$filename là đường dẫn của file cần ghi dữ liệu.

$data là dữ liệu cần ghi vào file. $data có thể là string, array hoặc stream resource.

$flag là các cờ thể hiện chế độ ghi dữ liệu của hàm file_put_contents(). Có thể kết hợp các flag với nhau bằng toán tử OR ( | ).

FlagMô tả
FILE_USE_INCLUDE_PATHCó thể tìm file trong include_path.
FILE_APPENDNếu file đã tồn tại, nối tiếp dữ liệu vào file thay vì phải ghi đè file.
LOCK_EXKhóa file nếu đang ghi dữ liệu.

$context là resource được tạo bởi hàm stream_context_create().

Kết quả trả về của hàm file_put_contents() là số byte được ghi vào file hoặc false nếu ghi file bị lỗi.

Ví dụ ghi đè dữ liệu vào file gochocit.txt

<?php
$file = 'gochocit.txt';
$data = "Hello all!";
file_put_contents($file, $data);
?>

Ví dụ nối dữ liệu vào file gochocit.txt

<?php
$file = 'gochocit.txt';
$data = "Hello all!";
file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
?>

Trong ví dụ trên, $flagFILE_APPEND | LOCK_EX. $flag này có nghĩa là nối dữ liệu vào file gochocit.txt và khóa file trong khi ghi dữ liệu.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Mở (open) và đọc (read) file trong PHPXây dựng lớp (class) và tạo đối tượng (object) trong PHP >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.