Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich nachgestellte Zeilenumbrüche, wenn ich in PHP in eine Datei schreibe?

Warum erhalte ich nachgestellte Zeilenumbrüche, wenn ich in PHP in eine Datei schreibe?

Susan Sarandon
Susan SarandonOriginal
2024-11-11 12:49:02879Durchsuche

Why Am I Getting Trailing Newlines When Writing to a File in PHP?

Zeilenvorschubprobleme in PHP: Überwindung des nachgestellten Zeilenumbruchs

Beim Schreiben in eine Datei in PHP mit fwrite() im „w“-Modus , kommt es häufig vor, dass unerwartete Zeilenumbrüche an die Ausgabe angehängt werden. Dies war im bereitgestellten Code der Fall, wo „n“ dazu gedacht war, Zeilenumbrüche zu erzeugen, stattdessen aber als Zeichenfolge erschien.

Das n-Dilemma

Der Grund dafür Dieses eigenartige Verhalten ist auf die verwendete Escape-Sequenz zurückzuführen. Standardmäßig behandeln Zeichenfolgen in einfachen Anführungszeichen „n“ als wörtlichen Backslash gefolgt vom Buchstaben „n“ und nicht als Zeilenumbruchzeichen. Um dies zu beheben, ist es notwendig, Zeichenfolgen in doppelte Anführungszeichen zu verwenden und das Zeilenumbruchzeichen ordnungsgemäß mit „n“ zu maskieren.

Windows- und Unix-Zeilenenden

Ein weiterer zu berücksichtigender Aspekt ist das Zeilenendzeichen. Verschiedene Betriebssysteme verwenden unterschiedliche Konventionen für Zeilenenden:

  • Windows: „rn“ (Wagenrücklauf gefolgt von Newline)
  • Unix-basierte Systeme (einschließlich Linux und macOS): „n " (nur Zeilenumbruch)

Um eine ordnungsgemäße Behandlung des Zeilenendes zu gewährleisten, wird empfohlen, die Datei im Binärmodus zu öffnen, der das Schreiben von Rohdaten ohne Zeilenende ermöglicht Konvertierung. Dazu gehört die Verwendung von „wb“ als zweiter Parameter für fopen().

Aktualisierter Code:

Durch die Implementierung dieser Korrekturen schreibt der unten stehende geänderte Code erfolgreich jede Gem-ID in einer neuen Zeile ohne überflüssige Zeichen:

$i = 0;
$file = fopen('ids.txt', 'wb');
foreach ($gemList as $gem)
{
    fwrite($file, $gem->getAttribute('id') . "\n");
    $gemIDs[$i] = $gem->getAttribute('id');
    $i++;
}
fclose($file);

Das obige ist der detaillierte Inhalt vonWarum erhalte ich nachgestellte Zeilenumbrüche, wenn ich in PHP in eine Datei schreibe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn