Schreibe eine neue Zeile Datei in PHP (Zeilenvorschub)
Frage
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, es schreibt \n
als String, so dass die Datei sieht wie folgt aus:
40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880
Von Google'ing es sagt mir \r\n
zu verwenden, aber \r
ist ein Wagenrücklauf, die nicht zu sein scheint, was ich tun möchte. Ich möchte nur die Datei wie folgt aussehen:
40119
40122
40120
42155
36925
45881
42145
45880
Danke.
Lösung
Ersetzen '\n'
mit "\n"
. Die Escape-Sequenz nicht erkannt, wenn Sie '
verwenden.
Sehen Sie die Handbuch .
Für die Frage, wie Zeilenenden zu schreiben, finden Sie in der Notiz href="http://www.php.net/manual/en/function.fopen.php">. Grundsätzlich haben verschiedene Betriebssysteme unterschiedliche Konventionen für Zeilenende. Windows-Anwendungen "\ r \ n", Unix-basierte Betriebssysteme verwenden "\ n". Sie sollten auf eine Konvention halten (ich würde wähle „\ n“) und öffnen Sie Ihre Datei im Binärmodus (fopen
sollte „wb“ erhält, nicht „w“).
Andere Tipps
Verwenden PHP_EOL
die Ausgänge \r\n
oder \n
auf dem OS abhängig.
PHP_EOL ist eine vordefinierte Konstante in PHP seit PHP 4.3.10 und PHP 5.0.2. Finden Sie in der Handbuch Posting:
das Verwenden sparen Sie zusätzliche Codierung auf Cross-Plattform-Entwicklungen.
IE.
$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);
Wenn Sie durch diese Schleife zweimal würden Sie sehen, in ‚somefile‘:
some data
some data
Sie können auch verwenden file_put_contents()
:
file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);