2010-02-24 15 views
22

Mam plik, do którego piszę i nie mogę uzyskać file_put_contents, aby dołączyć następny wpis w nowej linii, nawet po znaku nowej linii. czego mi brakuje? Jestem na komputerze z systemem Windows.file_put_contents i nowa linia help

$file = 'test.txt'; 
$message = "test\n\n"; 
file_put_contents($file, $message, FILE_APPEND); 

Odpowiedz

9

Jak przeglądasz zawartość $file? jeśli używasz notatnika, nie możesz zobaczyć \n.

+0

Tak, w Notatniku .. Ok, więc to jest mój problem? Czy jest coś, co mogę zrobić, aby zobaczyć przerwy w notatniku? – jim

+7

\ r \ n zamiast \ n – VolkerK

+0

Używam notatnika2. pobierz na www.flos-freeware.ch – stillstanding

73

spróbować

$file = 'test.txt'; 
$message = "test".PHP_EOL; 
file_put_contents($file, $message, FILE_APPEND); 

lub

$file = 'test.txt'; 
$message = "test\r\n"; 
file_put_contents($file, $message, FILE_APPEND); 
+14

+1 za używanie "PHP_EOL" – Gordon

+1

"test" .PHP_EOL; To działa! – noober

13

Dla PHP_EOL nie może widzieć swoją nową linię, ponieważ jesteś określająca koniec linii po wyraź swoją nową linię. Dlatego nowa linia jest tworzona dopiero po dodaniu nowej zawartości do ostatniego wiersza pliku tekstowego.

należy czytać tak:

$file = 'test.txt'; 
$message = 'some message that should appear on the last line of test.txt'; 
file_put_contents($file, PHP_EOL . $message, FILE_APPEND); 
+2

Ta odpowiedź potrzebuje WAY więcej miłości. To naprawiło mój problem. – ILikeTurtles

+0

działa doskonale dla mnie dzięki! –

2

Daj normalne nowej linii i działa

$file = 'test.txt'; 
$message = "test 
"; 
file_put_contents($file, $message, FILE_APPEND); 
1

Najpierw przeczytaj coś o nowej linii charakteru. To jest inna dla każdego systemu operacyjnego ... Jest LF, CR, CR + LF ... Zobacz here

W systemie Windows, trzeba CR + LF (\r\n) jako Mathieu już powiedział. W systemie Linux, tylko LF jest potrzebne (\n)

Jednak, aby mieć pewność, użyj PHP_EOL.

Używając plików, prawdopodobnie będziesz musiał wiedzieć więcej o ścieżce i separatorach katalogów. Są również różne. Użyj DIRECTORY_SEPARATOR zamiast do przodu ukośnik lub back-slash;)

1

Dla tych, którzy przechodzą do drugiego argumentu file_put_contents jako tablicę zamiast napisu, to działa również umieścić PHP_EOL jako ostatni element tablicy:

file_put_contents($file, array('value 1', 'value 2', PHP_EOL), FILE_APPEND);