<?php
$fn = "content.txt";
if (isset($_POST['content'])){
$content = stripslashes($_POST['content']);
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
$old_content = file_get_contents($fn);
fputs($fp, $content."\n".$old_content);
fclose($fp) or die ("Error closing file!");
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
<textarea rows="25" cols="40" name="content"></textarea>
<input type="submit" value="Submit">
</form>
所以这是我的PHP代码。但它会删除以前写入的数据。如何将新数据添加到新行中?保留最后的数据。 谢谢!
<?php
$fn = "content.txt";
if (isset($_POST['content'])){
$content = stripslashes($_POST['content']);
$fp = fopen($fn,"a+") or die ("Error opening file in write mode!");
fputs($fp,$content);
fclose($fp) or die ("Error closing file!");
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
<textarea rows="25" cols="40" name="content"></textarea>
<input type="submit" value="Submit">
</form>
现在它根本不起作用
答案 0 :(得分:3)
来自fopen手册:
'a'仅供写作;将文件指针放在。的末尾 文件。如果该文件不存在,请尝试创建它。
更改
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
到
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
答案 1 :(得分:2)
您可以使用a
或a+
模式代替w
,这样您就可以:
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
而不是:
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
来自 manual 关于fopen mode
:
&#39; w&#39;:仅供写作;将文件指针放在开头 该文件并将文件截断为零长度。如果文件没有 存在,试图创造它。
&#39; a&#39;:仅供写作;将文件指针放在。的末尾 文件。如果该文件不存在,请尝试创建它。
&#39; a +&#39;:开放阅读和写作;将文件指针放在最后 的文件。如果该文件不存在,请尝试创建它。
答案 2 :(得分:1)
将您的通话更改为fopen
以使用追加模式而不是写:
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
答案 3 :(得分:1)
观察 - 因为你已经使用了file_get_contents我想提一下写作的反向函数:
file_put_contents($fn, $content, FILE_APPEND);
这样你甚至不需要打开文本文件并将其加载到内存中。
也有助于记录。
答案 4 :(得分:1)
“现在它根本不起作用”
^ - «根据您的编辑,这将在新行上写下每个条目:
我改变了:
$content = stripslashes($_POST['content']);
到
$content = stripslashes($_POST['content'] . "\n");
使用\n
将在新行上包含所有新条目。
PHP
<?php
$fn = "content.txt";
if (isset($_POST['content'])){
$content = stripslashes($_POST['content'] . "\n");
$fp = fopen($fn,"a+") or die ("Error opening file in write mode!");
fputs($fp,$content);
fclose($fp) or die ("Error closing file!");
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
<textarea rows="25" cols="40" name="content"></textarea>
<input type="submit" value="Submit">
</form>
写入档案:
A1
A2
A3
A4
A5
你好世界!!
测试123
一次写入一个文件:
A1,A2,A3,A4,A5
如图所示输入textarea框并写入文件,如下所示:
Hello world !!
测试123
如果您希望从顶部开始输入数据,请使用:
<?php
if (isset($_POST['content'])){
$content = stripslashes($_POST['content'] . "\n");
$file_data = $content;
$file_data .= file_get_contents('content.txt');
file_put_contents('content.txt', $file_data);
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
<textarea rows="25" cols="40" name="content"></textarea>
<input type="submit" value="Submit">
</form>