php逐行读取文件,逐行修改文件,删除指定行

谁各给个示例?特别是第三个(用文件指针来操作,不要先把整个文件读出来再foreach)... 谁各给个示例?特别是第三个
(用文件指针来操作,不要先把整个文件读出来再foreach)
展开
 我来答
奥丁神王
推荐于2016-02-29 · TA获得超过357个赞
知道小有建树答主
回答量:331
采纳率:100%
帮助的人:390万
展开全部

修改和删除指定行,我们一般用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);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式