fgetcsv ファイルポインタから行を取得し、CSVフィールドを処理する &reftitle.description; arrayfalsefgetcsv resourcestream intnulllength&null; stringseparator"," stringenclosure"\"" stringescape"\\" fgets に動作は似ていますが、 fgetcsv は行を CSV フォーマットのフィールドとして読込み処理を行い、 読み込んだフィールドを含む配列を返すという違いがあります。 この関数はロケール設定を考慮します。 例えば、LC_CTYPEen_US.UTF-8 の場合、 1 バイトエンコーディングでエンコードされたデータが 間違って処理されるかもしれません。 &reftitle.parameters; stream ファイルポインタは有効なものでなければならず、また fopen, popen, もしくは fsockopen で正常にオープンされたファイルを指している必要があります。 length (行末文字を考慮して) CSV ファイルにある最も長い行よりも大きい必要があります。 そうでない場合は、ひとつの行が length 文字ずつのチャンクに分割されてしまいます。 ただし、フィールド囲いこみ文字の内部では、この分割は発生しません。 このパラメータを省略 (もしくは 0 を設定、 PHP 8.0.0 以降では &null; を設定) すると、 最大行長は制限されません。この場合、若干動作が遅くなります。 separator separator パラメータで、フィールドのデリミタを設定します。 シングルバイト文字 1 文字のみでなければなりません。 enclosure オプションの enclosure パラメータで、フィールド囲いこみ文字を設定します。 シングルバイト文字 1 文字のみでなければなりません。 escape オプションの escape パラメータで、エスケープ文字を設定します。 シングルバイト文字 1 文字のみ、または空文字列でなければなりません。 空文字列("") を指定すると、(RFC 4180 に準拠していない) 独自仕様のエスケープ機構が無効になります。 enclosure の文字は、フィールド内で2回出力される ことでエスケープされます。しかし、 escape 文字はその代替として使えます。 デフォルトのパラメータの値 ""\" は同じ意味を持ちます。 enclosure の文字を escape 文字でエスケープすることには、 特別な意味はありません。それ自身をエスケープする意味ですらありません。 PHP 8.4.0 以降では、escape のデフォルト値に依存することは非推奨となりました。 位置指定の引数か、名前付き引数 を使用して明示的に指定する必要があります。 &warning.csv.escape-parameter; &reftitle.returnvalues; 読み込んだフィールドの内容を含む数値添字配列を返します。 &return.falseforfailure; CSV ファイルの空行は null フィールドを一つだけ含む配列として返され、 エラーにはなりません。 ¬e.line-endings; &reftitle.errors; separator または enclosure が 1 バイト長ではない場合、ValueError をスローします。 escape が 1 バイト長、または空文字列ではない場合、 ValueError をスローします。 &reftitle.changelog; &Version; &Description; 8.4.0 escape のデフォルト値に依存することは、 非推奨になりました。 8.3.0 最後のフィールドが、 閉じられていないフィールド囲いこみ文字だけの場合、 null バイト 1 つの文字列ではなく、空文字列を返すようになりました。 8.0.0 length は、nullable になりました。 7.4.0 escape パラメータが空文字列を受け入れるようになりました。 この場合、(RFC 4180 に準拠していない) 独自仕様のエスケープ機構が無効になります。 &warning.csv.escape-parameter; &reftitle.examples; CSV ファイルの全てのコンテンツを読み込み、表示する $num fields in line $row:

\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "
\n"; } } fclose($handle); } ?> ]]>
&reftitle.seealso; fputcsv str_getcsv SplFileObject::fgetcsv SplFileObject::fputcsv SplFileObject::setCsvControl SplFileObject::getCsvControl explode file pack