Start · Sprachen · PHP · Referenz · fputs

fputs

Funktion

Alias von <code>fwrite()</code> — schreibt einen String in eine geöffnete Datei oder einen Stream.

seit PHP 4.0.0 Kategorie: io

Signatur

fputs(resource $handle, string $string, int $length = ?): int|false

Beschreibung

fputs() ist ein vollständiger Alias der Funktion fwrite() und verhält sich in jeder Hinsicht identisch. Die Funktion schreibt den Inhalt eines Strings in die durch $handle referenzierte Datei bzw. den Stream. Der Schreibzeiger wird nach dem Schreiben entsprechend der geschriebenen Bytes vorgerückt.

Der optionale Parameter $length begrenzt die Anzahl der zu schreibenden Bytes. Wird er weggelassen, wird der gesamte String geschrieben. Dies ist nützlich, wenn nur ein bestimmter Abschnitt eines Strings in die Datei übertragen werden soll.

fputs() funktioniert mit allen Stream-Typen, die mit fopen(), popen(), fsockopen() oder ähnlichen Funktionen geöffnet wurden. Es eignet sich gleichermaßen für Text- und Binärdateien, wobei bei Binärdaten der Modus b beim Öffnen empfohlen wird, um plattformspezifische Zeilenumbruch-Konversionen zu vermeiden.

Da fputs() nur ein Alias ist, wird in modernem Code die direkte Verwendung von fwrite() bevorzugt, um Klarheit zu schaffen. fputs() existiert hauptsächlich aus Kompatibilitätsgründen und weil es Entwicklern vertraut ist, die aus der C-Welt kommen, wo fputs eine Standardfunktion der Standardbibliothek ist.

Parameter

Name Typ Default Beschreibung
$handle Pflicht resource Ein gültiges Datei-Handle, das zuvor mit fopen() oder einer ähnlichen Funktion geöffnet wurde.
$string Pflicht string Der String, der in die Datei geschrieben werden soll.
$length int Optionale maximale Anzahl der zu schreibenden Bytes. Ist $length angegeben, stoppt das Schreiben, sobald $length Bytes oder das Ende von $string erreicht wird — je nachdem, was zuerst eintritt.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der tatsächlich geschriebenen Bytes als int zurück, oder false bei einem Fehler.

Beispiele

Einfaches Schreiben in eine Textdatei

<?php
$datei = fopen('ausgabe.txt', 'w');
if ($datei === false) {
    die('Datei konnte nicht geöffnet werden.');
}

$zeilen = [
    "Erste Zeile\n",
    "Zweite Zeile\n",
    "Dritte Zeile\n",
];

foreach ($zeilen as $zeile) {
    $geschrieben = fputs($datei, $zeile);
    echo "Geschrieben: {$geschrieben} Bytes\n";
}

fclose($datei);
Geschrieben: 13 Bytes Geschrieben: 14 Bytes Geschrieben: 13 Bytes

Nur einen Teil eines Strings schreiben (mit $length)

<?php
$datei = fopen('teilausgabe.txt', 'w');
if ($datei === false) {
    die('Datei konnte nicht geöffnet werden.');
}

$text = 'Hallo, Welt! Dies ist ein langer Text.';

// Nur die ersten 13 Zeichen schreiben: "Hallo, Welt!"
$geschrieben = fputs($datei, $text, 13);
echo "Geschrieben: {$geschrieben} Bytes\n";

fclose($datei);

// Dateiinhalt zur Kontrolle ausgeben
echo file_get_contents('teilausgabe.txt');
Geschrieben: 13 Bytes Hallo, Welt!

// Wichtig · Fallstricke

Alias-Hinweis: fputs() ist ein exakter Alias von fwrite(). Beide Funktionen sind vollständig austauschbar. In neuem Code wird die Verwendung von fwrite() empfohlen, da Aliasse grundsätzlich als weniger idiomatisch gelten.

Binärdaten: Beim Schreiben von Binärdaten sollte die Datei im Binärmodus ('wb') geöffnet werden, um ungewollte Zeilenumbruch-Konvertierungen (insbesondere unter Windows) zu vermeiden.

Fehlerbehandlung: Der Rückgabewert false sollte mit === false geprüft werden, da ein Schreibvorgang von 0 Bytes (0) ebenfalls als falsy gilt und sonst fälschlicherweise als Fehler interpretiert würde.