php读取逐行读取文件

php读取逐行读取文件,第1张

换个1mb的文本它肯定有空格换行,具体 *** 作如下代码:

$file = file("welcome.txt")

foreach($file as &$line) echo $line.'<br />'

这个更方便, file()直接把文本按行转换成数组

fgets如果没指定第二参数,将直接读取到缓存结束为止, 其实它不以换行来循环的,它的第二参数也是限制每次读取的字符个数而已。

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

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

fclose($myfile)

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


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

原文地址: https://outofmemory.cn/tougao/6080045.html

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

发表评论

登录后才能评论

评论列表(0条)

保存