我有一段PHP代码,它应该在txt文件中找到合适的行并用新值替换它。只要字符串的长度没有变化,一切都有效。如果它的一个字符更长,则以下行会删除一个字符,依此类推。我不知道如何解决它。此外,我没有包含搜索正确行的部分,它工作正常,我认为它不相关。
PHP代码:
$f = fopen("score.txt", "r+") or die("error");
$s = $_SESSION["id"].";".$_POST['S']."\n";
(...)
fwrite($f,$s);
fclose($f);
之前的TXT文件:
N01;99
N02;102
N03;11
将N01的值更改为100(一个字符更长)后的TXT文件:
N01;100
02;102
N03;11
答案 0 :(得分:1)
当您写入文件时,您只是覆盖了字节。无法直接插入和删除文件。
您需要做的是将整个文件读入内存,替换您想要的内容,然后将其全部写回文件。
您可以使用file()
函数将文件读入数组,其中每个元素都是文件的一行。
$lines = file("score.txt");
foreach ($lines as &$line) {
list ($id, $s) = explode(';', $line);
if ($id == $_SESSION['id']) {
$line = $_SESSION["id"].";".$_POST['S']."\n";
break;
}
}
file_put_contents("score.txt", implode('', $lines));