2010-02-24 53 views
22

我有一個正在寫入的文件,我無法獲得file_put_contents以在新行上追加下一個條目,即使在換行符後面也是如此。我錯過了什麼?我在一臺Windows機器上。file_put_contents和一個新行幫助

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

回答

9

您如何查看$file的內容?如果您使用記事本,則無法看到\n

+0

是的,在記事本中..好的,那麼這是我的問題呢?有什麼我可以做的,看看記事本中的休息嗎? – jim 2010-02-24 10:33:06

+7

\ r \ n而不是\ n – VolkerK 2010-02-24 10:35:58

+0

我使用記事本2。下載www.flos-freeware.ch – stillstanding 2010-02-24 10:36:53

73

嘗試

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

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

使用'PHP_EOL'的+1 +1 – Gordon 2010-02-24 11:03:04

+1

「test」.PHP_EOL;有用! – noober 2011-12-04 20:33:04

13

,因爲你是你寫你的新的生產線後,定義​​行的末尾,你可能無法看到您的新生產線的PHP_EOL。因此,只有在將新內容添加到文本文件的最後一行之後纔會生成新行。

應該這樣寫:

$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

這個答案需要更多的愛。這解決了我的問題。 – ILikeTurtles 2013-07-18 20:49:34

+0

非常適合我,謝謝! – 2015-12-24 01:33:07

2

只要給一個正常的新生產線,它的作品

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

首先,閱讀一些關於新線字符。這是爲每個操作系統不同的...有LFCRCR + LF ...看一看here

在Windows上,你需要CR + LF\r\n)作爲馬修已經說過了。 在Linux上,只有LF需要(\n

但是,可以肯定,使用PHP_EOL

在使用文件時,您可能需要了解有關路徑和目錄分隔符的更多信息。他們也不同。使用DIRECTORY_SEPARATOR代替正斜槓或反斜槓)

1

對於那些誰是合格的第二個參數file_put_contents作爲數組,而不是字符串,它也可以把PHP_EOL作爲最後一個數組元素:

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