Php 将代码添加到.txt文件而不覆盖它
从手册: “a”只对写作开放;将文件指针放在 文件如果文件不存在,请尝试创建它 改变Php 将代码添加到.txt文件而不覆盖它,php,Php,从手册: “a”只对写作开放;将文件指针放在 文件如果文件不存在,请尝试创建它 改变 <?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,$cont
<?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>
到
您可以使用
a
或a+
模式而不是w
,因此您可以执行以下操作:
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
而不是:
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
在关于fopen模式的中:
“w”:仅开放用于写作;将文件指针放在文件的开头
文件,并将文件截断为零长度。如果文件没有
存在,尝试创建它
‘a’:只供写作使用;将文件指针放在
文件如果文件不存在,请尝试创建它
“a+”:开放阅读和写作;将文件指针放在末尾
文件的一部分。如果文件不存在,请尝试创建它
将呼叫更改为fopen
以使用追加模式而不是写入:
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
来源:观察-由于您已经在使用file\u get\u内容,我想提到的是,有一个用于写入的反向函数:
file\u put\u contents($fn,$content,file\u APPEND)代码>
这样,您甚至不需要打开文本文件并将其加载到内存中
也有助于记录日志
“现在它根本不起作用了”
^--«根据您的编辑,这将在新行中写入每个条目:
我改变了:
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
到
使用\n
将在新行上显示所有新条目
PHP
打开append-modea
或a+
使用a
或a+
或file\u append
=>@reidjako查看fopen
的PHP文档,您会发现它很有启发性。也就是说:=>$fp=fopen('file.txt','a+)代码>实际上它看起来像是OP试图预加到文件中,所以仅仅在附加模式下打开并不能剪切它@reidjako,准备文件是很昂贵的事情。如果你不能对文件进行处理,你可以考虑保存到不同的文件,并在运行时以相反的时间顺序将它们添加到一起。好点——但是如果OP真的想要预先准备好现有的文件内容,它就必须被读取到内存中,或者变成一个临时的“交换”文件。但OP是“预结束的”。@DanFarrell OP问“我如何使新数据段添加到新行?”我知道他想在末尾追加,但原始代码并不是这样做的。文件开头的一行也是“新行”…当然原始代码是在开头添加的,这就是为什么他问如何在结尾添加。。。
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
$fp = fopen($fn,"a") or die ("Error opening file in write mode!");
$content = stripslashes($_POST['content']);
$content = stripslashes($_POST['content'] . "\n");
<?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>
<?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>