SplFileObject::fgetcsv
ファイルから行を取り出し CSV フィールドとして処理する
&reftitle.description;
public arrayfalseSplFileObject::fgetcsv
stringseparator","
stringenclosure"\""
stringescape"\\"
CSV フォーマットのファイルから行を取り出し読み込まれたフィールドを含む配列を返します。
&reftitle.parameters;
separator
フィールドの区切り文字 (シングルバイト文字 1 文字のみ)。
デフォルトはカンマ(,)、 もしくは事前に
SplFileObject::setCsvControl を呼び出してセットされた値です。
enclosure
フィールド囲み文字 (シングルバイト文字 1 文字のみ)。
デフォルトはダブルクォート(")、もしくは事前に
SplFileObject::setCsvControl を呼び出してセットされた値です。
escape
エスケープ文字 (シングルバイト文字 最大で1文字)。
デフォルトはバックスラッシュ(\)、 もしくは事前に
SplFileObject::setCsvControl を呼び出してセットされた値です。
空文字列("")の場合、(RFC 4180 に準拠していない) 独自仕様のエスケープ機構が無効になります。
enclosure の文字は、フィールド内で2回出力される
ことでエスケープされます。しかし、
escape 文字はその代替として使えます。
デフォルトのパラメータの値
"" と \" は同じ意味を持ちます。
enclosure の文字を
escape 文字でエスケープすることには、
特別な意味はありません。それ自身をエスケープする意味ですらありません。
PHP 8.4.0 以降では、escape
のデフォルト値に依存することは非推奨となりました。
位置指定の引数か、名前付き引数を使用するか、
あるいは SplFileObject::setCsvControl
を呼び出して、明示的に指定する必要があります。
&warning.csv.escape-parameter;
&reftitle.returnvalues;
読み込まれたフィールドを含む数値添字配列もしくはエラーのときは &false; を返します。
CSV ファイルの空白行は SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE を使わない限り単独の &null; フィールドで構成される配列として返され、この場合空白行は読み飛ばされます。
&reftitle.changelog;
&Version;
&Description;
7.4.0
escape パラメータは空文字列を受け入れるようになりました。
この場合、(RFC 4180 に準拠していない) 独自仕様のエスケープ機構が無効になります。
&reftitle.examples;
SplFileObject::fgetcsv の例
eof()) {
var_dump($file->fgetcsv());
}
?>
]]>
SplFileObject::READ_CSV の例
setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
list($animal, $class, $legs) = $row;
printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>
]]>
animals.csv の内容
&example.outputs.similar;
&reftitle.seealso;
SplFileObject::fputcsv
SplFileObject::setCsvControl
SplFileObject::getCsvControl
SplFileObject::setFlags
SplFileObject::READ_CSV
SplFileObject::current
fputcsv
fgetcsv
str_getcsv