Định Nghĩa.
Hàm fputcsv() định dạng một dòng là CSV và ghi nó vào một tệp đang mở.
Cú pháp.
Cú pháp:
fputcsv(file, fields, separator, enclosure, escape)
Trong đó.
Tham số | Mô tả |
---|---|
file | Chỉ định tệp đang mở để ghi vào |
fields | Chỉ định mảng nào để lấy dữ liệu từ |
separator | Một ký tự chỉ định dấu phân cách trường. Mặc định là dấu phẩy (,) |
enclosure | Một ký tự chỉ định ký tự bao vây trường. Mặc định là “ |
escape | Chỉ định ký tự thoát. Mặc định là “\\”. Cũng có thể là một chuỗi rỗng (“”) vô hiệu hóa cơ chế thoát |
- Lưu ý: Nếu một ký tự bao vây được chứa trong một trường, nó sẽ được thoát bằng cách nhân đôi nó, trừ khi nó được đặt ngay trước một esc_char.
Giá trị trả về.
- Trả về độ dài của chuỗi được viết hoặc FALSE khi thất bại.
Sự thay đổi.
- PHP 7.4 – Tham số thoát bây giờ chấp nhận một chuỗi rỗng để vô hiệu hóa cơ chế thoát
- PHP 5.5 – Đã thêm tham số escape
Ví dụ.
Ví dụ # 1 Sử dụng fpassthru () với các tệp nhị phân
code:
?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
Ví dụ trên sẽ ghi như sau vào file.csv:
aaa,bbb,ccc,dddd 123,456,789 """aaa""","""bbb"""
Ghi chú.
- Nếu PHP không nhận dạng chính xác các kết thúc dòng khi đọc tệp trên hoặc được tạo bởi máy tính Macintosh, thì bật tùy chọn cấu hình thời gian chạy auto_detect_line_endings có thể giúp giải quyết vấn đề.
Hàm liên quan.
- fgetcsv() – Lấy dòng từ con trỏ tệp và phân tích cú pháp cho các trường CSV
Thông tin thêm.
- Nếu bạn cần gửi tệp CSV trực tiếp đến trình duyệt, mà không cần ghi vào tệp bên ngoài, bạn có thể mở đầu ra và sử dụng fputcsv trên nó ..
<?php $out = fopen('php://output', 'w'); fputcsv($out, array('this','is some', 'csv "stuff", you know.')); fclose($out); ?>
- Nếu bạn cần lưu đầu ra vào một biến (ví dụ: để sử dụng trong một framework), bạn có thể ghi vào trình bao bọc bộ nhớ tạm thời và truy xuất nội dung của nó:
<?php
// output up to 5MB is kept in memory, if it becomes bigger it will automatically be written to a temporary file
$csv = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
fputcsv($csv, array('blah','blah'));
rewind($csv);
// put it all in a variable
$output = stream_get_contents($csv);
?> - nếu bạn muốn tạo tệp UTF-8 cho excel, hãy sử dụng tệp này:
$fp = fopen($filename, 'w'); //add BOM to fix UTF-8 in Excel fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
- Đôi khi thật hữu ích khi lấy dòng CSV dưới dạng chuỗi. I E. để lưu trữ nó ở đâu đó, không phải trên một hệ thống tập tin.
<?php function csvstr(array $fields) : string { $f = fopen('php://memory', 'r+'); if (fputcsv($f, $fields) === false) { return false; } rewind($f); $csv_line = stream_get_contents($f); return rtrim($csv_line); } ?>
Các bạn có thể xem chi tiết hơn trên php.net.
Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm fputcsv() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com