Schreiben einer neuen Zeile in eine Datei in PHP (Zeilenvorschub)


109

Mein Code:

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

Aus irgendeinem Grund wird \nals Zeichenfolge geschrieben, sodass die Datei folgendermaßen aussieht:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880

Von Google'ing sagt es mir, dass ich es verwenden soll \r\n, aber es \rist ein Wagenrücklauf, der nicht das zu sein scheint, was ich tun möchte. Ich möchte nur, dass die Datei so aussieht:

40119
40122
40120
42155
36925
45881
42145
45880

Vielen Dank.

Antworten:


278

Ersetzen '\n'durch "\n". Die Escape-Sequenz wird bei Verwendung nicht erkannt '.

Siehe das Handbuch .

Informationen zum Schreiben von Zeilenenden finden Sie im Hinweis hier . Grundsätzlich haben unterschiedliche Betriebssysteme unterschiedliche Konventionen für Zeilenenden. Windows verwendet "\ r \ n", Unix-basierte Betriebssysteme verwenden "\ n". Sie sollten sich an eine Konvention halten (ich hätte "\ n" gewählt) und Ihre Datei im Binärmodus öffnen ( fopensollte "wb" erhalten, nicht "w").


Ich habe "\ r \ n" für mein Zeilenende in "\ n" geändert und es hat funktioniert. Vielen Dank.
Csonuryilmaz

Jetzt verwendet mein Code beides "und 'es stört mich
Mr PizzaGuy

Tatsächlich können Sie feststellen, dass \ n bei Verwendung von "" hervorgehoben wird, nicht jedoch bei Verwendung von ''. (Wenn Ihr Editor Syntaxhervorhebungen verwendet, ist mein Text Sublime Text 3)
DarkVeneno

68

Verwenden Sie PHP_EOLwelche Ausgänge \r\noder \nje nach Betriebssystem.


4
Keine Probleme, verwenden \nSie immer, es sei denn, Sie möchten die Datei in einem bestimmten Betriebssystem öffnen. Wenn ja, verwenden Sie die Newline-Kombination dieses Betriebssystems und nicht das Betriebssystem, auf dem Sie PHP ausführen ( PHP_EOL).
Alix Axel

60

PHP_EOL ist eine vordefinierte Konstante in PHP seit PHP 4.3.10 und PHP 5.0.2. Siehe die manuelle Veröffentlichung:

Wenn Sie dies verwenden, sparen Sie zusätzliche Codierung bei plattformübergreifenden Entwicklungen.

IE.

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);

Wenn Sie dies zweimal durchlaufen würden, würden Sie in 'somefile' sehen:

some data
some data

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.