php怎么一行一行的读取文件

php怎么一行一行的读取文件,第1张

$myfile = fopen("web.txt", "r") 

echo fgets($myfile)//fgets为读取一行,行本质是段落

fclose($myfile)

<?php

$c = getLine('./a.txt', 10)// 读取a.txt文件第10行内容

echo $c

/**

* 获取指定行内容

*

* @param $file 文件路径

* @param $line 行数

* @param $length 指定行返回内容长度

*/

function getLine($file, $line, $length = 4096){

$returnTxt = null// 初始化返回

$i = 1// 行数

$handle = @fopen($file, "r")

if ($handle) {

while (!feof($handle)) {

$buffer = fgets($handle, $length)

if($line == $i) $returnTxt = $buffer

$i++

}

fclose($handle)

}

return $returnTxt

}

修改和删除指定行,我们一般用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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7937320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存