fputcsv

行を CSV 形式にフォーマットし、ファイルポインタに書き込む

説明

intfalse fputcsv(
    resource $stream,
    array $fields,
    string $separator = ",",
    string $enclosure = "\"",
    string $escape = "\\",
    string $eol = "\n"
)

fputcsv は、行(fields 配列として渡されたもの)を CSV としてフォーマットし、それを stream で指定したファイルに書き込みます (いちばん最後に改行を追加します)。

パラメータ

stream

ファイルポインタは、有効なファイルポインタである必要があり、 fopen または fsockopen で正常にオープンされた (そしてまだ fclose でクローズされていない) ファイルを指している必要があります。

fields

文字列の配列。

separator

オプションの separator はフィールド区切り文字 (シングルバイト文字 一文字だけ) を指定します。

enclosure

オプションの enclosure はフィールドを囲む文字 (シングルバイト文字 一文字だけ) を指定します。

escape

オプションの escape は、エスケープ文字 (シングルバイト文字 最大で一文字) を指定します。 空文字("") を指定すると、(RFC 4180 に準拠していない) 独自仕様のエスケープ機構が無効になります。

eol

eol は、 カスタムの行末シーケンスを設定するオプションの引数です。

警告

escape が空の文字列("")以外に設定されているとき、 » RFC 4180 に準拠しない CSV が生成されたり、PHP の CSV 関数を介してラウンドトリップ(往復変換)でデータが壊れる可能性があります。 escapeのデフォルト値は"\\" なので、明示的に空の文字列を指定することを推奨します。デフォルト値は、PHP 9.0 以降の将来のバージョンで変更予定です。

注意:

enclosure がフィールド内に含まれる場合は、同じ文字を二度続けることでエスケープします。 ただし、その直前に escape がある場合は別です。

戻り値

書き込んだ文字列の長さを返します。失敗した場合に false を返します。

変更履歴

バージョン 説明
8.1.0 オプションの引数 eol が追加されました。
7.4.0 escape パラメータが、 (RFC 4180 に準拠していない) 独自仕様のエスケープ機構を無効にするため、 空文字列を受け入れるようになりました。

例1 fputcsv の例

<?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);
?>

上の例が書き出す file.csv の内容は、このようになります。

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

注意

注意: マッキントッシュコンピュータ上で作成されたファイルを読み込む際に、 PHP が行末を認識できないという問題が発生した場合、 実行時の設定オプションauto_detect_line_endings を有効にする必要が生じるかもしれません。

参考

  • fgetcsv