我想在文本文件中插入或删除一些内容。具体如下
1.txt
aaaaaaa
bbbbbbb
{想在这里插入ccccccc}
ddddddd
这该如何操作。第二种情况:
1.txt
aaaaaaa
bbbbbbb
ccccccc
ddddddd
想删除掉这里的ccccccc那一行,把文本变成如下所示:
1.txt
aaaaaaa
bbbbbbb
ddddddd
请问该如何操作?
---------------------------------------------------------------
第二种情况可以调用linux命令来完成。
$Str="cat filename ¦grep -V cccccccc > filename";
exec($Str);
---------------------------------------------------------------
一般的做法是将文本中的内容都读出来,赋值成数组或字串,再进行判断和处理,最后将整理过的内容重新写到文本中。
---------------------------------------------------------------
uGain(幽亙) 的办法我早想过了,但是如果文本的数据大,那样运算起来就很慢很慢,插如一个那不是很辛苦,有没有更好的想法,比如搞一个索引的文件,要到哪里插入,只是改变索引号就行,哎,但是我还有一个问题没有解决的就是,文本的遍历又不方便:)
---------------------------------------------------------------
给你两个函数参考一下
function file_insert($filename,$findStr,$insStr) {
$fp = @fopen($filename,"r+");
if(! $fp) return 0;
$retk = 0;
while($buffer = fgets($fp,2048)) {
if($buffer == $findStr.LF) {
$pos = ftell($fp);
$tmp = fread($fp,filesize($filename));
fseek($fp,$pos);
fwrite($fp,$insStr.LF.$tmp);
$retk = 1;
break;
}
}
fclose($fp);
return $retk;
}
function file_delete($filename,$delStr) {
$fp = @fopen($filename,"r+");
if(! $fp) return 0;
$retk = 0;
$pos = 0;
while($buffer = fgets($fp,2048)) {
if($buffer == $delStr.LF) {
echo ftell($fp);
$tmp = fread($fp,filesize($filename));
echo "-$pos:$tmp
1<br/>
";
fseek($fp,$pos);
echo ftell($fp)."
1<br/>
";
fwrite($fp,$tmp);
ftruncate($fp,filesize($filename)-strlen($buffer));
$retk = 1;
break;
}
$pos = ftell($fp);
}
fclose($fp);
return $retk;
}