SplFileObject::fputcsv

フィールドの配列を CSV の行として書き出す

説明

public intfalse SplFileObject::fputcsv(
    array $fields,
    string $separator = ",",
    string $enclosure = "\"",
    string $escape = "\\",
    string $eol = "\n"
)

fields の配列を、CSV の行としてファイルに書き出します。

パラメータ

fields

値の配列。

separator

オプションで指定する、フィールドの区切り文字 (シングルバイト文字 一文字のみ)。

enclosure

オプションで指定する。フィールドの囲み文字 (シングルバイト文字 一文字のみ)。

escape

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

eol

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

警告

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

注意:

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

警告

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

戻り値

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

separatorenclosure が一文字でない場合は false を返し、何もファイルに書き出しません。

エラー / 例外

separatorenclosure が一文字でない場合は E_WARNING レベルのエラーが発生します。

変更履歴

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

例1 SplFileObject::fputcsv の例

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$file = new SplFileObject('file.csv', 'w');

foreach ($list as $fields) {
    $file->fputcsv($fields);
}

?>

上の例は、次の内容をファイル file.csv に書き出します。

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

参考

  • fputcsv
  • SplFileObject::fgetcsv