我正试图通过AJAX使用php调用来替换.txt文件中的一行,我在这个文件中存储用户特定的信息。问题是,如果我一旦到达正确的行,就使用fwrite,它会在末尾保留任何比替换信息更长的先前信息。有没有一种简单的方法可以用php清除.txt文件中的一行,让我可以先调用?发生了什么的例子-假设我存储了最喜欢的作曲家,用户在他们的.txt文件中有“贝多芬”,并希望将其更改为“莫扎特”,当我将“贝多芬”与“莫扎特”合并使用时,我将“莫扎特”作为新行。我在fopen调用中使用了"r+“,因为我一次只想替换一行。
发布于 2011-09-30 22:18:02
如果不需要将此配置数据提供给非PHP应用程序,请考虑使用var_export()。它基本上是var_dump/print_r,但是将变量输出为可解析的PHP代码。这将使您的代码减少为:
include('config.php');
$CONFIG['musician'] = 'Mozart';
file_put_contents('config.php', '<?php $CONFIG = ' . var_export($CONFIG, true));发布于 2011-09-30 22:02:55
这是我前段时间写的一段代码,用来删除文件中的行,它必须修改。此外,如果新行比旧行更短,它将正常工作,因为更长的行将需要大量修改。
关键是第二个while循环,在该循环中,更改后文件的所有内容都将被重写到文件中的正确位置。
<?php
$size = filesize('test.txt');
$file = fopen('test.txt', 'r+');
$lineToDelete = 3;
$counter = 1;
while ($counter < $lineToDelete) {
fgets($file); // skip
$counter++;
}
$position = ftell($file);
$lineToRemove = fgets($file);
$bufferSize = strlen($lineToRemove);
while ($newLine = fread($file, $bufferSize)) {
fseek($file, $position, SEEK_SET);
fwrite($file, $newLine);
$position = ftell($file);
fseek($file, $bufferSize, SEEK_CUR);
}
ftruncate($file, $size - $bufferSize);
echo 'Done';
fclose($file);
?>https://stackoverflow.com/questions/7611457
复制相似问题