我有一个保存到txt文件的反馈表单,它可以完美保存,但可以节省一行。因此,多行注释将保存在一行中,以便在记事本上只保存一行,而不是将不同的注释分隔到不同的行上。
这是我的HTML
<form action="feedback.php" method="post">
<table>
<tr>
<td>Email Address:</td>
<td>
<input type="text" name="email_address" value="" maxlength="100" />
</td>
</tr>
<tr>
<td>
Comments:
</td>
<td>
<textarea rows="10" cols="50" name="comments">
</textarea>
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</form>
这是我的php:
<?php
$email_address = $_POST['email_address'];
$comments = $_POST['comments'];
$myfile = fopen("feedback.txt", "a") or die("Unable to open file!");
$txt = 'Email: '.$email.'\nComments: '.$comments.'\n\n';
fwrite($myfile, $txt);
fclose($myfile);
?>
所以我需要不同的注释来保存到不同的行而不只是一行。
答案 0 :(得分:1)
您的\n
(新行)无效,因为您使用撇号'
而不是双引号"
。
例如,你有:
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
你需要:
$txt="Email: ".$email."\nComments: ".$comments."\n\n";
您更改使用的变量名称时未写入您的电子邮件地址。 例如你有这个代码:
$email_address=$_POST['email_address'];
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
您的$txt
变量正在使用$email
,但您要将$_POST
数据设置为变量$email_address
。
试试这个完整的代码:
$email_address = $_POST['email_address'];
$comments = $_POST['comments'];
$myfile = fopen("feedback.txt", "a") or die("Unable to open file!");
$txt="Email: ".$email_address."\nComments: ".$comments."\n\n";
fwrite($myfile, $txt);
fclose($myfile);
这是一个简单的错误,但你应该尝试养成复制和粘贴变量名的习惯,而不是重新输入它们。这(帮助)避免拼写错误等,这在大型代码块和&amp;多个文件,成为一个更大的问题。
并使用您的错误日志 - 它们在编码时非常宝贵!
在这种情况下,PHP(因此日志)会对未定义的$email
变量抱怨,这反过来会导致您检查变量并且您可能已经解决了。
答案 1 :(得分:0)
我会使用PHP_EOL
,因为它是跨平台兼容的!这意味着它处理Unix / DOS / Mac问题!
(另外我想你想改变$email
变量)
所以请记住你的界限:
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
使用:
$txt = "Email: ". $email_address . PHP_EOL . "Comments: " . $comments . PHP_EOL . PHP_EOL;
答案 2 :(得分:0)
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
使用\ r \ n创建新的行文本文件,如:
$ txt ='电子邮件:'。$ email。'\ r \ n评论:'。$ comments。'\ r \ n';
答案 3 :(得分:0)
您实际上可能会使用单引号并连接换行符,但您需要编写如下代码:
<?php
echo 'This is a test of using a newline char.' . chr(10) .
'Did it work? It should have.';
?>
为了减少出错的可能性,我们应该做一些检查。用户是否真的提交了表单?此外,我们不应该假设来自$ _POST的所有数据都是安全的,因此我使用htmlentities()作为电子邮件地址和评论,以防恶意用户试图放入他们不应该放弃的内容。
另一点是,有些人认为变量插值是缓慢的,但具有讽刺意味的是,插值处理变得越有效,插值处理就越有效。顺便说一句,我通过添加一些换行并删除其他换行来更改了一些换行符,以便最终结果的格式更容易阅读。
<?php
if (isset($_POST) && $_POST != NULL) {
$email_address = htmlentities($_POST['email_address']);
$comments = htmlentities($_POST['comments']);
$myfile = fopen("feedback.txt", "a") or exit("Unable to open file!");
$txt="Email: $email_address\nComments:\n\n$comments\n\n";
fwrite($myfile, $txt);
fclose($myfile);
}
?>
我用exit()替换了病态的die(),因为它们都是等效的语言结构;它们都生成相同的EXIT操作码。