2010-02-24 4 views
22

J'ai un fichier dans lequel j'écris et je ne peux pas obtenir file_put_contents pour ajouter l'entrée suivante sur une nouvelle ligne, même après un caractère de retour à la ligne. Qu'est-ce que je rate? Je suis sur une machine Windows.file_put_contents et une nouvelle ligne d'aide

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

Répondre

9

comment regardez-vous le contenu de $file? Si vous utilisez le bloc-notes, vous ne pouvez pas voir \n.

+0

Oui, dans le bloc-notes .. Ok, donc c'est mon problème alors? Y at-il quelque chose que je peux faire pour voir les pauses dans le bloc-notes? – jim

+7

\ r \ n au lieu de \ n – VolkerK

+0

j'utilise notepad2. télécharger sur www.flos-freeware.ch – stillstanding

73

essayer

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

ou

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

+1 pour l'utilisation de 'PHP_EOL' – Gordon

+1

" test ".PHP_EOL; Ça marche! – noober

13

Pour la PHP_EOL vous ne pouvez pas être voir votre nouvelle ligne parce que vous définissez la fin de la ligne après que vous écrivez votre nouvelle ligne. Par conséquent, la nouvelle ligne n'est créée qu'après l'ajout du nouveau contenu à la dernière ligne de votre fichier texte.

il faut lire comme ceci:

$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

Cette réponse a besoin de plus d'amour. Cela a résolu mon problème. – ILikeTurtles

+0

fonctionne très bien pour moi merci! –

2

juste donner une nouvelle ligne normale et il fonctionne

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

lire d'abord, quelque chose sur le caractère de nouvelle ligne. Il est différent pour chaque système d'exploitation ... Il est LF, CR, CR + LF ... Jetez un coup d'oeil here

Sous Windows, vous devez CR + LF (\r\n) comme Mathieu a déjà dit. Sur Linux, seulement LF est nécessaire (\n)

Mais, pour être sûr, utiliser PHP_EOL. Lorsque vous utilisez des fichiers, vous devez probablement en savoir plus sur les séparateurs de chemins et de répertoires. Ils sont également différents. Utilisez DIRECTORY_SEPARATOR au lieu de l'avant-barre oblique ou barre oblique inverse;)

1

Pour ceux qui passent le second argument de file_put_contents comme un tableau plutôt qu'une chaîne, il travaille également à mettre PHP_EOL comme le dernier élément de tableau:

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