Hàm fputcsv() trong PHP

29/07/2020 - lượt xem
Chia sẻ
 
Rate this post

Đị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(filefieldsseparatorenclosureescape)

Trong đó.

Tham sốMô tả
fileChỉ định tệp đang mở để ghi vào
fieldsChỉ định mảng nào để lấy dữ liệu từ
separatorMột ký tự chỉ định dấu phân cách trường. Mặc định là dấu phẩy (,)
enclosureMột ký tự chỉ định ký tự bao vây trường. Mặc định là “
escapeChỉ đị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

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm