• 技术文章 >后端开发 >PHP问题

    PHP中怎样读取文件?(分享总结)

    长期闲置长期闲置2021-10-18 16:15:32原创93
    在之前的文章中给大家带来了《让人心动的PHP的正则表达式基础(图例详解)》,主要讲述了PHP正则表达式的基础知识以及通过示例来进行使用学习。本篇文章继续来学习一下PHP文件系统的相关知识。希望对大家有所帮助!

    在我们使用电脑时,我们都会使用电脑来打开关闭一个文件,创建一个文件或者上传一个文件。那么这些操作在代码里能不能做呢?如果能做的话,应该怎样去做?其实很简单,学习文件处理实际上就是学习文件处理的函数,再结合之前所学习的内容。那么接下来我们一起来看看吧。

    读取文件算得上是我们再日常使用中最常见的一个操作了,那么再代码里要怎样实现。

    下面来介绍一下如何使用 PHP 中的函数来读取文件内容。

    fgetc():从文件中读取一个字符

    在使用这些函数读取文件之前,我们需要先在服务器根目录下建立一个文本文件(这里我们以 text.txt 为例),文本内容如下:

    1018.22.png

    接下来我们来看一看,fgetc()在使用中应该怎样去用,输出的结果又是如何:

    <?php
        header("Content-Type: text/html;charset=utf-8");   
        $handle = fopen('test.txt', 'r');             
       
    $a = fgetc($handle)  ;
           echo $a; 
           
    ?>

    输出结果:

    1018.29.png

    fgetc只能读取一个字符,我们可以利用之前讲到的循环来进行结合,就可以得到下面示例:

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

    输出结果:

    1018.23.png

    fgets()fgetss():逐行读取文件

    <?php
        header("Content-Type: text/html;charset=utf-8");   
        $handle = fopen('test.txt', 'r');             
       
    $a = fgets($handle)  ;
           echo $a; 
           
    ?>

    输出结果:

    1018.30.png

    fgetss()函数是fgets()的一个变式,也是用来读取一行数据,读取的同时它还会过滤掉读取内容中的PHP和HTML标记,

    可以看出,通过fgets可以逐行读取文件,同时可以和上文一样,我们可以利用循环来读取全部文件。

    示例如下:

    <?php
        $handle = @fopen("test.txt", "r");
        if ($handle) {
            while (($info = fgets($handle, 1024)) !== false) {
                echo $info.'<br>';
            }
            fclose($handle);
        }                                
    ?>

    输出结果:

    1018.24.png

    fread():读取文件(任意长度)

    1018.25.png

    <?php
        $filename = "test.txt";
        $handle = fopen($filename, "r");
        $contents = fread($handle, '6');
        echo '从文件中读取 6 个字符长度:'.$contents.'<br>';
        rewind($handle);
        $contents = fread($handle, filesize($filename));
        echo '读取全部的文件内容:'.$contents;
        fclose($handle);
    ?>

    输出结果:

    1018.26.png

    readfile():读取全部文件

    <?php
        $file = 'test.txt';
        $info = readfile($file);
    ?>

    输出结果:

    1018.27.png

    file():把整个文件读入一个数组中

    <?php
        $file = 'test.txt';
        $arr  = file($file, FILE_IGNORE_NEW_LINES);
        $arr2 = file($file);
        echo '<pre>';
        var_dump($arr);
        var_dump($arr2);
    ?>

    输出结果:

    1018.28.png

    file_get_contents():将文件读入一个字符串

    首先,我们先创建一个test.txt文件

    1018.22.png

    然后输入:

    <?php
        $a = 'test.txt';
       $b = file_get_contents($a);
       //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
       $c = explode("\n", $b);
       //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。
       while (list($key, $val) = each($c)) {
           ++$key;
           $val = trim($val);
           //用的单引号,单引号不解释变量进行了拼接而已
           print 'Line' . $key .':'.  $val.'<br />';
       }
    ?>

    通过与我们之前学的知识结合起来,输出结果:

    1018.21.png

    这就是我们学习的知识进行了整合,先是通过file_get_contents先打开文件,然后在通过list each语句和while循环,得到了输出结果。

    扩展知识:fopen、fread、fclose操作读取

    上述的file_get_contents打开文件的方式简单又粗暴,那么接下来的几个

    resource fopen ( string $文件名, string 模式)
    string fread ( resource $操作资源, int 读取长度)
    bool fclose ( resource $操作资源 )

    通过上面的函数我们来讲解资源类型的通常操作方式:

    fopen函数 fopen函数的功能是打开文件,参数主要有两个:

    返回类型是一个资源类型,资源类型需要其他的函数来操作这个资源。所有的资源有打开就要有关闭。

    fread函数: 函数的功能的功能是读取打开的文件资源。读取指定长度的文件资源,读取一部份向后移动一部份。至到文件结尾。

    fclose函数 :fclose函数的功能是关闭资源。资源有打开就有关闭。

    接下来给大家介绍一下fopen函数的模式:

    推荐学习:《PHP视频教程

    以上就是PHP中怎样读取文件?(分享总结)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:PHP 文件
    上一篇:php获取时间对不上怎么办 下一篇:php如何将小数转为百分数
    线上培训班

    相关文章推荐

    • php怎么实现数字验证码• php date()获取月份怎么去掉零• 怎么更改centos 的php版本• php怎么替换图片链接• php怎么设置警告等级

    全部评论我要评论

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

    PHP中文网