2010-11-16 9 views
27
Schreiben

Ich habe folgendes Testskript:Zeilenumbruch funktioniert nicht, wenn auf Textdatei in PHP

<?php 

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = "Floppy Jalopy\n"; 
fwrite($fh, $stringData); 
$stringData = "Pointy Pinto\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

?> 

wenn jedoch lief und geöffnet usign Notepad, die Daten in einer einzigen Zeile zurückgegeben werden, ohne Pausen, wie:

Floppy Jalopy (verrückt Kasten) Pointy Pinto (verrückt Box)

, wo ich das entsprechende Zeichen für 'verrückt Box' nicht finden können, aber es ist ein Wirklich verrückte Box. WAS GIBT!

Antwort

33

Wenn Sie die Datei in Windows Notepad öffnen möchten, müssen Sie Windows Zeilenumbrüche verwenden: \r\n

+2

Wenn Sie es in Wordpad öffnen, wird es entweder '\ n' oder' \ r \ n' bewältigen, wie viele andere Editoren, aber Notepad ist pingelig. – Spudley

51

Am besten ist es PHP_EOL zu verwenden. Dies ist plattformübergreifend und wählt automatisch die richtigen Newline-Zeichen für die Plattform, auf der PHP gerade läuft.

$stringData = "Floppy Jalopy" . PHP_EOL; 

PHP Constants

+7

Es ist nur "am besten", PHP_EOL zu verwenden, wenn die Dateien immer auf derselben Plattform verwendet werden sollen, auf der das Skript ausgeführt wird. Meiner Erfahrung nach erstellen Sie Dateien, die Sie später herunterladen, per E-Mail versenden oder später analysieren - in allen Fällen, in denen Sie Dateien mit einem * spezifischen * Newline-Zeichen benötigen und nicht mit der Plattform, auf der das Skript läuft. – AndreKR

+0

@AndreKR: True. –

+0

Dies scheint die beste Antwort zu sein. –

1

Ihr Code läuft gut.

Verwenden Sie Notepad2 oder Notepad++, wenn Sie unter Windows arbeiten. Der integrierte Notepad kann keine Zeilenenden nach Unix-Art verarbeiten.

0

. PHP_EOL; wird universell funktionieren

+0

Dies scheint sich zu wiederholen [diese existierende Antwort] (http://stackoverflow.com/a/4196123). – Pang

Verwandte Themen