• 技术文章 >后端开发 >php教程

    php文件操作之逐行读取文件

    青灯夜游青灯夜游2021-08-03 17:19:57原创578
    在上一篇的文章《php文件操作之逐个字符读取文件》中我们介绍了读取文件的一种方法:逐个字符读取文件。本篇文章我们再带大家了解一种读取文件的方法:逐行读取文件,看看如何逐行读取文件内容并输出,一起来学习吧。

    有一个名为“test.txt”的文本文件,里面的内容为:

    1.png

    我们如何逐行读取文件中的内容并输出?简单,今天我们就来给大家介绍两种方法。

    方法1:使用fgets()函数

    我们来看看代码示例:

    <?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $handle = fopen('./test.txt', 'r');                 //打开文件
    if (!$handle) {                                     //判断文件是否打开成功
        echo '文件打开失败!';
    }
    while (false !== ($char = fgets($handle,1024))) {        //循环读取文件内容
        echo $char."<br>";
    }
    fclose($handle);                                    //关闭文件
    ?>

    输出结果:

    1.png

    关键函数分析:

    fgets()函数用于从打开的文件中读取一行数据,接受一个必需参数$file(被打开的文件)和一个可选参数$length(要读取的字节数);如果省略了 $length 参数,则默认读取 1k(即1024字节)长度。

    fgets()函数在遇到换行符EOF(读到文件末尾)或者到达指定长度 $length-1 后停止(返回字符串长度最大值为 $length-1 个字节)。

    如果我们不知道文件中有多少数据,可以使用filesize()函数来获取,该函数可以返回指定文件的大小(字节数)。

    所以上面的代码示例可以修改一下:

    <?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $url = './test.txt';
    $handle = fopen($url, 'r');                 //打开文件 
    $size= filesize($url);                  //计算文件大小
    if (!$handle) {                                     //判断文件是否打开成功
        echo '文件打开失败!';
    }
    while (false !== ($char = fgets($handle,$size))) {        //循环读取文件内容
        echo $char."<br>";
    }
    fclose($handle);                                    //关闭文件
    ?>

    输出结果和上面是一样的。

    方法2:使用fgetss()函数

    我们来看看代码示例:

    <?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $handle = fopen('./test.txt', 'r');                 //打开文件
    if (!$handle) {                                     //判断文件是否打开成功
        echo '文件打开失败!';
    }
    while (false !== ($char = fgetss($handle,1024))) {        //循环读取文件内容
        echo $char."<br>";
    }
    fclose($handle);                                    //关闭文件
    ?>

    输出结果:

    2.png

    关键函数分析:

    fgetss()函数和fgets()函数相似,都可以从打开的文件中读取一行数据,不同的是fgetss()函数会过滤掉数据中的 HTML 和 PHP 标签。

    fgetss() 函数接受一个必需参数$file、两个可选参数$length$tags。参数$file和$length在fgets()函数中介绍过来,大家可以去上文了解。而参数$tags是用来指定哪些标记不被去掉,我们通过一个例子来具体了解一下:

    3.png

    <?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $handle = fopen('./test.txt', 'r');                 //打开文件
    if (!$handle) {                                     //判断文件是否打开成功
        echo '文件打开失败!';
    }
    while (false !== ($char = fgetss($handle,1024,"<h1>,<em>"))) {        //循环读取文件内容
        echo $char."<br>";
    }
    fclose($handle);                                    //关闭文件
    ?>

    在上面的代码中,我们设置参数$tags的值为“<h1>,<em>”,也就是不过滤<h1><em>标签,因此输出结果:

    4.png

    注意:在操作完文件后,要记得使用fclose()函数来关闭文件!

    好了就说到这里了,有其他想知道的,可以点击这个哦。→ →PHP文件基础操作

    推荐:PHP面试题大汇总(收藏)》《php视频教程

    以上就是php文件操作之逐行读取文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:用PHP快速返回不为0的最小整数 下一篇:php文件操作之检查文件是否可读/写/执行
    线上培训班

    相关文章推荐

    • 怎么解决php读取文件乱码问题• 如何在PHP中利用fread()读取文件• ​一天撸完文件操作之读取文件相关操作(附详解)• php文件操作之逐个字符读取文件

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网