我正在开发简单的调试脚本,允许我(当按下保存按钮时)向.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']);
}
}
显然目前它只是覆盖了文本文件并获取了所有内容,我该如何修改它以便它完成我上面描述的内容?
答案 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);
将所有内容保留在一行中。