2012-10-16 53 views
9

我的PHP形式的PHP輸出新線,結果輸出保存在文本文件中的膠水,將一個字符串,如:在一個文本文件

Name1Email1The Message1Name2Email2The Message2Name3Email3The Message3Name4Email4The消息4

但我需要空間和/或換行符。我通常不使用PHP,所以我不明白。我沒有在網上找到答案,也在這裏閱讀了一些問答,但這並沒有幫助我。

的形式爲:

<form action="mailer.php?savedata=1" method="post"> 
Your Name: <input type="text" name="name"><br> 
Your Email: <input type="text" name="email"><br> 
Your Message:<br> <textarea name="message" rows="5" cols="30"></textarea><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

的PHP

<?php 
$savedata = $_REQUEST['savedata']; 
if ($savedata == 1){ 
$data = $_POST['name']; 
$data .= $_POST['email']; 
$data .= $_POST['message']; 
$file = "YOURDATAFILE.txt"; 

$fp = fopen($file, "a") or die("Couldn't open $file for writing!"); 
fwrite($fp, $data) or die("Couldn't write values to file!"); 

fclose($fp); 
echo "Your Form has been Submitted!"; 

} 
?> 

回答

17

至於其他的答案狀態,你需要在行字符的每個字段後結束添加。

不同的操作系統使用不同的行結束,不過,這樣一個「\ n」可以不顯示在Windows上新線爲例。正如Mahdi所說,您可以使用Windows風格的「\ r \ n」行結尾,或者您可以使用PHP_EOL常量,以便輸出適合服務器的行結尾,在這種情況下,您的代碼看起來像

$data = $_POST['name'] . PHP_EOL; 
$data .= $_POST['email'] . PHP_EOL; 
$data .= $_POST['message'] . PHP_EOL; 
+0

感謝所有!我選擇你的答案會導致不同的操作系統參數。 –

3

您可以使用 「\ n」 來寫一個新行。

$data = $_POST['name'] . "\n"; 
$data .= $_POST['email'] . "\n"; 
$data .= $_POST['message'] . "\n"; 

就像旁註一樣,\ n必須用雙引號。當被單引號包圍時,它將不起作用。

0

you'r $data變量需要已經有\n新行字符在裏面。

2

我通常Carriage Return結合New Line

$data = $_POST['name'] . "\r\n"; 
3

當你連接你的輸入值時,你將不會有任何換行符;您可以使用文字"\n""\r\n"來添加它們。爲了把它們串一起,你可以使用連接運算符或使用sprintf()象下面這樣:

$data = sprintf("%s\n%s\n%s\n", $_POST['name'], $_POST['email'], $_POST['messge']); 
$file = "YOURDATAFILE.txt"; 
file_put_contents($file, $data, FILE_APPEND); 

我也用file_put_contents()FILE_APPEND標誌數據附加到文件和保存的代碼幾行。

-1

當我們試圖提取通過Web表格在線提交的數據寫入相同的,其被放置在Web服務器上的文本文件 - 而不會覆蓋已經包含在上述文本文件中的信息,然後我們使用標記內的以下代碼:

<html> 
<body> 
<form action="" method=""> 
<input value="submit"> 
<div>Name: <input value=""></div> 
<div>email: <input value=""></div> 
...   ...   ... 
<div><button>Submit</button></div> 
</form> 
</body> 
</html> 

上述HTML代碼加上以下PHP代碼:

<?php 
$fileName = 'fdata.txt'; 
$fp = fopen('fdata.txt', 'a'); 
$savestring = $_POST['name'] . ',' . $_POST['email'] ; 
fwrite($fp, $savestring);    
fclose($fp); 
?> 

但上述兩種代碼一起導致了在所附的並弦一起數據文本文件 - 也就是說,從後續Web窗體中提取的每個新記錄(數據集)都不會從新行開始(不存在換行符或回車)。

我在網上搜索了上述問題的解決方案 - 正如網絡上建議的那樣,我在下面添加了「\ r \ n」(用雙引號)並且使用了'PHP_EOL'(不帶引號):

$fp = fopen('fdata.txt', 'a', "\r\n"); 
$savestring = 「\r\n」 . PHP_EOL . ' ' . $_POST['name'] . ',' . $_POST['email'] . 
PHP_EOL; 

然而,沒有換行符(我的網絡服務器和我的桌面使用Windows)。這意味着在世界上數百萬用戶網絡的任何人的知識範圍內沒有切實可行的解決方案。看起來參數'a'覆蓋了「\ r \ n」,「PHP_EOL」等。