PHP输出的新行在文本文件中

Dar*_*rus 10 php forms text-files output

我的PHP表单将输出保存在文本文件中,将结果粘贴到一个字符串,如:

Name1Email1The Message1Name2Email2The Message2Name3Email3The Message3Name4Email4The Message4

但我需要空格和/或换行符.我通常不使用PHP,所以我不明白.我没有在网上找到答案,也在这里读了一些Q/A,但这对我没有帮助.

表格:

<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>
Run Code Online (Sandbox Code Playgroud)

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!";

}
?>
Run Code Online (Sandbox Code Playgroud)

Dal*_*lin 18

正如其他答案所述,您需要在每个字段后添加行尾字符.

但是,不同的操作系统使用不同的行结尾,因此"\n"可能不会在Windows上显示为新行.正如Mahdi所说,您可以使用Windows样式"\ r \n"行结尾,或者您可以使用PHP_EOL常量,以便输出适合于服务器的行结尾,在这种情况下,您的代码看起来像

$data = $_POST['name'] . PHP_EOL;
$data .= $_POST['email'] . PHP_EOL;
$data .= $_POST['message'] . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)


Lou*_*uer 5

您可以使用“\n”来写一个新行。

$data = $_POST['name'] . "\n";
$data .= $_POST['email'] . "\n";
$data .= $_POST['message'] . "\n";
Run Code Online (Sandbox Code Playgroud)

就像旁注一样,\n 必须用双引号引起来。当被单引号包围时,它将不起作用。