在文本文件中添加新行并从上次添加中获取行

时间:2018-05-14 07:23:34

标签: php

我正在开发简单的调试脚本,允许我(当按下保存按钮时)向.txt文件添加新行,然后在页面加载时,获取上次保存的内容。

所以例如我有我的user_input.txt文件,当我按下保存时 - 我正在为此文件添加时间戳和textarea内容。当再次加载页面时,我从上次保存中获取内容。

目前我有这个代码来获取:

$current_user_input = file_get_contents('user_input.txt');
if($current_user_input === false) {
    $current_user_input = '';
}

并设置:

if($_POST) {
    if($_POST['user_input']) {
        $file = 'user_input.txt';
        file_put_contents($file, $_POST['user_input']);
    }
}

显然目前它只是覆盖了文本文件并获取了所有内容,我该如何修改它以便它完成我上面描述的内容?

1 个答案:

答案 0 :(得分:2)

对于保存,您需要附加数据(正如AjAX的评论所说的那样使用FILE_APPEND),还要添加行尾以确保它们出现在单独的行中。

if($_POST) {
    if($_POST['user_input']) {
        $file = 'user_input.txt';
        file_put_contents($file, $_POST['user_input'].PHP_EOL, FILE_APPEND);
    }
}

然后,您可以使用file()检索最后一行,该行将文件逐行读入数组并获取最后一个元素...

$oldInput = file($file);
if(!empty($oldInput)) {
    $current_user_input = array_pop($oldInput);
}
else {
    $current_user_input = '';
}

更新: 对于多行内容,您可以将新行更改为<br />代码...

file_put_contents($file, 
        str_replace( PHP_EOL, '<br />', $_POST['user_input']).PHP_EOL, 
        FILE_APPEND);

将所有内容保留在一行中。