Hàm fputcsv() trong PHP

Hàm fputcsv() trong PHP
Hàm fputcsv() trong PHP

Chức năng của Hàm fputcsv() trong PHP

Hàm fputcsv() trong PHP dùng để thêm mảng bình thường hoặc mảng đa chiều vào file .csv, đối với mảng đa chiều mỗi mảng con sẽ là một dòng, mỗi phần tử của mảng con là một cột của dòng đó, đối với mảng bình thường mỗi phần tử của mảng là một cột của dòng được thêm vào.

Cú pháp của Hàm fputcsv() trong PHP

fputcsv("đường_dẫn_file_csv", $biến_mảng);	

đường_dẫn_file_csv: Đường dẫn file .csv

$biến_mảng: Biến là mảng con của mảng đa chiều hoặc biến của mảng bình thường.

Code Hàm fputcsv() trong PHP

Hàm fputcsv() thêm mảng bình thường vào file .csv

Ghi mảng vào một dòng, mỗi phần tử của mảng là một cột của dòng:

<?php
// Mảng bình thường
$mang = array ("Vân", "Lực" ,"Quỳnh", "Dung");
// Quy định chế độ viết, chuyển chế độ đọc, viết của file ở trạng thái mở
$filenguon = fopen("thumuctest/test.csv","w");

// Quy định ghi ký tự tiếng việt vào file
fwrite($filenguon, chr(0xEF) . chr(0xBB) . chr(0xBF));

// Ghi mảng vào một dòng, mỗi phần tử của mảng là một cột của dòng.
fputcsv($filenguon, $mang);	

// Đóng trạng thái mở của file
fclose($filenguon);
?>

Kết quả trong file .csv:

A B C D
Vân Lực Quỳnh Dung

Hàm fputcsv() thêm mảng đa chiều vào file .csv

Lặp mảng đa chiều, ghi một mảng vào một dòng, mỗi mảng mỗi dòng, mỗi phần tử của mảng là một cột của dòng đó:

<?php
// Mảng đa chiều
$manglist = array (
  array("Vân", "Lực" ,"Quỳnh", "Dung"),
  array("Jun", "Lòng" ,"Nhím", "Hạ")
);
// Quy định chế độ viết, chuyển chế độ đọc, viết của file ở trạng thái mở
$filenguon = fopen("thumuctest/test.csv","w");

// Quy định ghi ký tự tiếng việt vào file
fwrite($filenguon, chr(0xEF) . chr(0xBB) . chr(0xBF));

// Lặp mảng đa chiều
foreach ($manglist as $dongmang) {
 // Ghi một mảng vào một dòng, mỗi mảng mỗi dòng, mỗi phần tử của mảng là một cột của dòng đó.
 fputcsv($filenguon, $dongmang);	
}

// Đóng trạng thái mở của file
fclose($filenguon);
?>

Kết quả trong file .csv:

A B C D
Vân Lực Quỳnh Dung
Jun Lòng Nhím Hạ

Những lưu ý khi sử dụng hàm fputcsv() trong PHP

Hàm fputcsv() khá đơn giản khi bắt đầu sử dụng, nhưng một số vấn đề có thể phát sinh khi dữ liệu được lấy từ cơ sở dữ liệu hoặc cần tạo file CSV cho người dùng tải xuống. Đặc biệt, dữ liệu tiếng Việt, file đã tồn tại và quyền ghi là ba điểm nên kiểm tra trước khi đưa chức năng xuất CSV vào ứng dụng thực tế.

Xử lý ký tự tiếng Việt khi xuất file CSV

CSV không quy định một cách duy nhất về mã hóa ký tự. Vì vậy, dữ liệu tiếng Việt được ghi bằng UTF-8 có thể hiển thị không đúng trong một số phần mềm bảng tính nếu file thiếu thông tin nhận diện mã hóa.

Một cách thường dùng là thêm UTF-8 BOM ở đầu file trước khi ghi dòng dữ liệu đầu tiên. BOM giúp một số chương trình nhận biết file đang sử dụng UTF-8, từ đó hạn chế tình trạng chữ tiếng Việt bị biến thành các ký tự khó đọc.

<?php
$handle = fopen('du-lieu.csv', 'w');

fwrite($handle, "\xEF\xBB\xBF");

fputcsv($handle, ['Họ tên', 'Địa chỉ']);
fputcsv($handle, ['Nguyễn Văn An', 'Hà Nội']);

fclose($handle);
?>

Không nên tự chuyển toàn bộ dữ liệu sang một bảng mã khác chỉ để khắc phục lỗi hiển thị. Nếu hệ thống đang xử lý dữ liệu bằng UTF-8, nên duy trì UTF-8 xuyên suốt quá trình lấy dữ liệu, tạo CSV và phân phối file. BOM chỉ nên được thêm ở đầu file khi môi trường sử dụng thực sự cần nó.

Ghi dữ liệu vào file CSV đã tồn tại

Cách mở file quyết định dữ liệu cũ có được giữ lại hay không. Nếu sử dụng chế độ w, nội dung hiện có của file sẽ bị xóa trước khi dữ liệu mới được ghi. Đây là lựa chọn phù hợp khi mỗi lần xuất dữ liệu đều cần tạo một file hoàn toàn mới.

Nếu muốn bổ sung các dòng mới vào cuối file, có thể mở file bằng chế độ a. Khi đó, dữ liệu cũ được giữ nguyên và các dòng mới sẽ tiếp tục được ghi phía sau.

<?php
$handle = fopen('du-lieu.csv', 'a');

fputcsv($handle, ['Nguyễn Văn B', 'Đà Nẵng']);

fclose($handle);
?>

Do đó, cần xác định rõ mục đích trước khi chọn chế độ mở file. Dùng nhầm w trong trường hợp cần bổ sung dữ liệu có thể khiến toàn bộ nội dung CSV trước đó bị ghi đè.

Kiểm tra quyền ghi file trước khi sử dụng fputcsv()

fputcsv() chỉ có thể ghi dữ liệu khi PHP nhận được một resource file hợp lệ và hệ thống cho phép tiến trình PHP thực hiện thao tác ghi. Nếu thư mục hoặc file không có quyền phù hợp, việc tạo CSV có thể thất bại.

Vì vậy, nên kiểm tra kết quả của fopen() trước khi truyền file vào fputcsv(). Cách này giúp phát hiện lỗi sớm thay vì tiếp tục xử lý với một file không thể ghi.

<?php
$handle = fopen('du-lieu.csv', 'w');

if ($handle === false) {
    die('Không thể mở file để ghi dữ liệu.');
}

fputcsv($handle, ['Họ tên', 'Email']);

fclose($handle);
?>

Ngoài quyền của chính file, cũng cần chú ý đến quyền của thư mục chứa file nếu ứng dụng phải tự tạo file mới. Trong môi trường máy chủ, tài khoản chạy PHP có thể khác với tài khoản đang quản lý mã nguồn, nên việc một thư mục nhìn như có thể ghi từ giao diện quản trị không đồng nghĩa PHP chắc chắn có quyền ghi vào đó.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm fputcsv() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm fputcsv() trong PHP
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !