php逐行读取文件,逐行修改文件,删除指定行
展开全部
修改和删除指定行,我们一般用file将文件内容读取到数组中,根据数字索引比较容易修改,但是你要求用文件指针,这个比较麻烦,不管你用的是filesystem的函数还是spl类函数,都不可避免一个问题,对一个文件流操作,最多替换流中间的某一段内容,不可能实现插入,又不是c语言的链表,
//修改第二行内容
$f = fopen('test.txt', 'r+');
$i = 1;
while (!feof($f)) {
if ($i == 2) {
fseek($f, 0, SEEK_CUR);
fwrite($f, 'aad');//这里的修改是替换形式,如果修改后这一行的长度比原来短,那么可以用空格填充到原来长度,这样实现修改,而且不影响后面的内容,但是修改后的比原来长就麻烦了,
break;
}
fgets($f);
$i++;
}
fclose($f);
//删除行同修改行一样,只不过是将原来行替换为同等长度的空格串
$f = fopen('test.txt', 'r+');
$j = 1;
while (!feof($f)) {
if ($j == 2){
$row = fgets($f);
$len = strlen($row);
echo ftell($f)-$len."<br>";
fseek($f, ftell($f)-$len);
fwrite($f, str_pad(' ', $len, ' '));
break;
}
fgets($f);
$j++;
}
fclose($f);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询