Giới thiệu

Trong quá trình phát triển web với PHP, việc xử lý file là một phần quan trọng, đặc biệt khi bạn cần lưu trữ, đọc hoặc ghi dữ liệu vào các tập tin (file) trên máy chủ. PHP cung cấp các hàm mạnh mẽ để làm việc với file, cho phép bạn dễ dàng thao tác với tệp tin, từ việc tải lên, đọc dữ liệu, ghi dữ liệu, đến xóa file.

Trong bài viết này, bạn sẽ được hướng dẫn cách sử dụng các hàm xử lý file trong PHP qua những ví dụ cụ thể, giúp bạn dễ dàng áp dụng vào các dự án thực tế.

1. Mở và đóng file trong PHP

Trước khi có thể thao tác với file, bạn cần mở file bằng cách sử dụng hàm fopen(). Sau khi hoàn thành công việc với file, bạn nên đóng file bằng fclose() để giải phóng tài nguyên hệ thống.

Cú pháp mở file với fopen():

php
$handle = fopen("filename.txt", "mode");
  • filename.txt: Đường dẫn tới file cần mở.
  • mode: Chế độ mở file, có thể là các giá trị sau:
    • "r": Mở file chỉ để đọc.
    • "w": Mở file chỉ để ghi, xóa nội dung cũ nếu file đã tồn tại.
    • "a": Mở file để ghi, giữ nguyên nội dung cũ và thêm nội dung mới vào cuối file.
    • "x": Tạo file mới để ghi, báo lỗi nếu file đã tồn tại.

Ví dụ 1: mở và đóng file

php
<?php
// Mở file
$file = fopen("example.txt", "r");

// Đóng file
fclose($file);
?>

Giải thích: File example.txt được mở để đọc, và sau đó được đóng lại ngay khi không còn sử dụng.

2. Đọc file trong PHP

Để đọc nội dung của một file trong PHP, bạn có thể sử dụng các hàm như:

  • fread(): Đọc một số byte từ file.
  • fgets(): Đọc từng dòng từ file.
  • file_get_contents(): Đọc toàn bộ nội dung của file vào một chuỗi.

Ví dụ 2: đọc toàn bộ nội dung file với file_get_contents()

php
<?php
// Đọc toàn bộ nội dung file
$content = file_get_contents("example.txt");
echo $content;
?>

Giải thích: Hàm file_get_contents() đọc toàn bộ nội dung của file example.txt và in ra màn hình.

Ví dụ 3: đọc từng dòng từ file với fgets()

php
<?php
// Mở file để đọc
$file = fopen("example.txt", "r");

// Đọc file từng dòng
while (!feof($file)) {
    $line = fgets($file);
    echo $line . "<br>";
}

// Đóng file
fclose($file);
?>

Giải thích: Ở đây, chúng ta sử dụng vòng lặp while và hàm fgets() để đọc từng dòng từ file cho đến khi kết thúc file (hàm feof() dùng để kiểm tra xem đã đến cuối file hay chưa).

3. Ghi dữ liệu vào file

Bạn có thể sử dụng các hàm fwrite() hoặc file_put_contents() để ghi dữ liệu vào file trong PHP. Nếu file chưa tồn tại, PHP sẽ tự động tạo file mới.

Ví dụ 4: ghi dữ liệu vào file với file_put_contents()

php
<?php
// Dữ liệu cần ghi vào file
$data = "Hello, đây là dữ liệu mới!\n";

// Ghi dữ liệu vào file (tạo file nếu chưa tồn tại)
file_put_contents("example.txt", $data);
?>

Giải thích: Hàm file_put_contents() ghi chuỗi data vào file example.txt. Nếu file chưa tồn tại, PHP sẽ tự động tạo file mới. Nếu file đã tồn tại, nội dung cũ sẽ bị ghi đè.

Ví dụ 5: ghi thêm dữ liệu vào file với fwrite()

php
<?php
// Mở file để ghi thêm
$file = fopen("example.txt", "a");

// Dữ liệu cần thêm vào file
$data = "Dữ liệu bổ sung.\n";

// Ghi dữ liệu vào file
fwrite($file, $data);

// Đóng file
fclose($file);
?>

Giải thích: Hàm fwrite() ghi chuỗi dữ liệu vào cuối file example.txt mà không ghi đè lên nội dung cũ. Chế độ "a" (append) cho phép thêm dữ liệu vào cuối file.

4. Xóa file trong PHP

Để xóa một file, PHP cung cấp hàm unlink(). Hàm này sẽ xóa file khỏi hệ thống nếu file tồn tại.

Ví dụ 6: xóa file

php
<?php
// Xóa file example.txt
if (file_exists("example.txt")) {
    unlink("example.txt");
    echo "File đã bị xóa.";
} else {
    echo "File không tồn tại.";
}
?>

Giải thích: Trước khi xóa file, hàm file_exists() kiểm tra xem file có tồn tại hay không. Nếu tồn tại, file sẽ bị xóa bởi hàm unlink().

5. Kiểm tra và quản lý file

Trước khi thực hiện các thao tác với file, bạn có thể sử dụng các hàm để kiểm tra sự tồn tại hoặc trạng thái của file.

Một số hàm kiểm tra file phổ biến:

  • file_exists(): Kiểm tra xem file có tồn tại hay không.
  • is_readable(): Kiểm tra xem file có thể đọc được không.
  • is_writable(): Kiểm tra xem file có thể ghi được không.
  • filesize(): Lấy kích thước của file (tính bằng byte).

Ví dụ 7: kiểm tra thông tin file

php
<?php
$filename = "example.txt";

if (file_exists($filename)) {
    echo "File tồn tại.<br>";
    echo "Kích thước file: " . filesize($filename) . " bytes<br>";

    if (is_readable($filename)) {
        echo "File có thể đọc được.<br>";
    }

    if (is_writable($filename)) {
        echo "File có thể ghi được.<br>";
    }
} else {
    echo "File không tồn tại.";
}
?>

Giải thích: Ví dụ này kiểm tra xem file example.txt có tồn tại không, sau đó kiểm tra kích thước của file và xem file có thể đọc và ghi được không.

6. Upload file trong PHP

Việc tải lên file là một yêu cầu phổ biến trong các ứng dụng web. PHP hỗ trợ tải file từ trình duyệt người dùng lên máy chủ thông qua các form HTML.

Cấu trúc form HTML để tải file:

html
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload">
    <button type="submit">Tải lên</button>
</form>

Code PHP để xử lý việc tải file (upload.php):

php
upload.php
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

// Kiểm tra và xử lý việc tải file
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "File " . basename($_FILES["fileToUpload"]["name"]) . " đã được tải lên thành công.";
} else {
    echo "Đã xảy ra lỗi khi tải file.";
}
?>

Giải thích:

  • Biến $_FILES chứa thông tin về file đã được tải lên.
  • Hàm move_uploaded_file() di chuyển file từ thư mục tạm thời sang thư mục đích trên máy chủ.

7. Kết luận

Xử lý file trong PHP là một kỹ năng quan trọng và hữu ích khi bạn cần tương tác với hệ thống tệp của máy chủ. Bạn có thể thực hiện các thao tác như mở, đọc, ghi, xóa file, hoặc thậm chí tải file từ trình duyệt lên máy chủ.

Tóm tắt các thao tác chính với file trong PHP:

  • Mở file: Sử dụng fopen().
  • Đọc file: Sử dụng fread(), fgets(), hoặc file_get_contents().
  • Ghi file: Sử dụng fwrite() hoặc file_put_contents().
  • Xóa file: Sử dụng unlink().
  • Kiểm tra file: Sử dụng file_exists(), is_readable(), is_writable().
  • Tải file lên: Sử dụng form HTML và xử lý bằng $_FILES trong PHP.

Chúc bạn học tập hiệu quả và áp dụng thành công trên CodeTutHub!