php文本文件处理方法

我想在文本文件中插入或删除一些内容。具体如下
1.txt
aaaaaaa
bbbbbbb
{想在这里插入ccccccc}
ddddddd
这该如何操作。第二种情况:
1.txt
aaaaaaa
bbbbbbb
ccccccc
ddddddd
想删除掉这里的ccccccc那一行,把文本变成如下所示:
1.txt
aaaaaaa
bbbbbbb
ddddddd

请问该如何操作?
---------------------------------------------------------------

第二种情况可以调用linux命令来完成。
$Str="cat filename &brvbargrep -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;
}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus