fputcsv

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

fputcsvFormat line as CSV and write to file pointer

Beschreibung

fputcsv(
    resource $stream,
    array $fields,
    string $separator = ",",
    string $enclosure = "\"",
    string $escape = "\\",
    string $eol = "\n"
): int|false

fputcsv() formats a line (passed as a fields array) as CSV and writes it (terminated by a eol) to the specified stream.

Parameter-Liste

stream

Der Zeiger auf eine Datei muss gültig sein und auf eine Datei verweisen, die vorher erfolgreich mit fopen() oder fsockopen() geöffnet (und nicht bereits von fclose() geschlossen) wurde.

fields

An array of strings.

separator

Der Parameter separator setzt das Feld-Trennzeichen. Es muss ein Single-Byte-Zeichen sein.

enclosure

Der Parameter enclosure setzt das Feld-Begrenzungszeichen. Es muss ein Single-Byte-Zeichen sein.

escape

Der Parameter escape setzt das Maskierungs-Zeichen. Es muss ein Single-Byte-Zeichen oder die leere Zeichenkette sein. Die leere Zeichenkette ("") deaktiviert den proprietären Maskierungsmechanismus.

Warnung

Im Eingabe Stream kann das enclosure-Zeichen immer maskiert werden, indem es innerhalb einer in Anführungszeichen gesetzten Zeichenkette verdoppelt wird, was zu einem einzelnen enclosure-Zeichen im geparsten Ergebnis führt. Das escape-Zeichen funktioniert anders: wenn eine Sequenz aus escape- und enclosure-Zeichen in der Eingabe erscheint, werden beide Zeichen im geparsten Ergebnis vorhanden sein. Für die Standardparameter wird also eine CSV-Zeile wie "a""b","c\"d" die Felder als a"b und c\"d parsen.

Warnung

Seit PHP 8.4.0 ist es veraltet, sich auf den Standardwert von escape zu verlassen. Er muss explizit angegeben werden, entweder an der richtigen Stelle oder durch die Verwendung von benannten Argumenten.

eol

The optional eol parameter sets a custom End of Line sequence.

Warnung

Wenn escape auf etwas anderes als eine leere Zeichenkette ("") gesetzt wird, kann dies zu einer CSV-Datei führen, die nicht mit » RFC 4180 konform ist oder die den Umlauf durch die PHP-CSV-Funktionen nicht übersteht. Der Standardwert für escape ist "\\", weshalb empfohlen wird, diesen Parameter explizit auf eine leere Zeichenkette zu setzen. Der Standardwert wird sich in einer zukünftigen Version von PHP ändern, jedoch nicht vor PHP 9.0.

Hinweis:

If an enclosure character is contained in a field, it will be escaped by doubling it, unless it is immediately preceded by an escape.

Rückgabewerte

Returns the length of the written string Bei einem Fehler wird false zurückgegeben..

Fehler/Exceptions

Wenn separator oder enclosure nicht ein Byte lang ist, wird ein ValueError geworfen.

Wenn escape nicht ein Byte lang oder eine leere Zeichenkette ist, wird ein ValueError geworfen.

Changelog

Version Beschreibung
8.4.0 Sich auf den Standardwert von escape zu verlassen, ist nun veraltet.
8.1.0 The optional eol parameter has been added.
7.4.0 The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.

Beispiele

Beispiel #1 fputcsv() example

<?php

$list
= [
[
'aaa', 'bbb', 'ccc', 'dddd'],
[
'123', '456', '789'],
[
'"aaa"', '"bbb"']
];

$fp = fopen('file.csv', 'w');

foreach (
$list as $fields) {
fputcsv($fp, $fields, ',', '"', '');
}

fclose($fp);
?>

The above example will write the following to file.csv:

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

Siehe auch