0

我想用新值更改文本文件的旧值(删除旧内容并替换它),当我使用下面的代码时,它向我显示一个错误页面,我真的不知道如何解决这个问题,甚至使用过不同类型的文件打开方法(w、r+、a ...)并不起作用!

$i=$_POST['id'];
$fp = fopen ("/test/member_dl.txt", "r+");  
$ch = fgets ($fp);

$t=explode('||',$ch);
$t[$i-1]='';
$ch2=implode('||',$t);
fwrite($fp,$ch2);
fclose ($fp);
4

2 回答 2

1

既然要完全替换内容,为什么不直接删除它,然后重新创建呢?

unlink ("/test/member_dl.txt"); 
$fp = fopen ("/test/member_dl.txt", "r+"); 
// Continue with your code.
// Not sure I follow what you are doing with it

编辑:老实说,我不确定我是否理解你的那部分代码在做什么。

unlink()命令删除文件。从那里您可以重新开始并根据需要写出文件?

于 2013-09-11T10:13:32.040 回答
0

虽然它是开放的$fp = fopen ("/test/member_dl.txt", "r+");

你将无法fwrite($fp,$ch2);

用“w+”打开它应该可以读写。

尝试这个:

$i=$_POST['id'];
$fp = fopen("/test/member_dl.txt", "w+");
$ch = fread($fp, filesize($fp));

$t=explode('||',$ch);
$t[$i-1]='';
$ch2=implode('||',$t);
fwrite($fp,$ch2);
fclose ($fp);

编辑:

测试了这个,这个有效

$ch = file_get_contents("test.txt");

$t=explode('||',$ch);
$t[$i-1]='';
$ch2=implode('||',$t);

file_put_contents("test.txt","hello");
于 2013-09-11T10:16:34.620 回答