Php 将代码添加到.txt文件而不覆盖它

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

从手册:

“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,$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-mode
a
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>