首页 >后端开发 >php教程 >PHP文件处理—如何读取文件(一行,整个文件)

PHP文件处理—如何读取文件(一行,整个文件)

黄舟
黄舟原创
2017-04-15 10:55:2110178浏览

PHP文件处理—如何读取文件(一行,整个文件)

相对打开和关闭文件来说,读写文件更复杂一些。这里主要从读取数据和写入数据两方面进行讲解。

那么在上一篇文章《PHP文件处理—打开和关闭文件》中介绍了打开和关闭文件,打开文件是所有操作文件的前提,而关闭是所有操作文件的结尾,那么我们今天就给来介绍如何读取文件!

从文件中读取数据

从文件中读取数据,可以读取一个字符、一行字符串或者是整个文件,还可以读取指定长度的字串。

1.读取整个文件:readfile()、flie()以及file_get_contents()三个函数,下面我们将一一介绍!

readfile()函数

readfile()函数用于读入一个文件并且将其写入到输出缓冲,如果出现错误则返回 false。 函数语法格式如下:

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

使用 readfile()函数,不需要打开文件和关闭文件,也不需要 echo ,print等输出语句,直接先写出文件路径就可以了。

flie()函数

flie()函数也可以读取整个文件的内容,只是 file()函数将文件内容按行存放到数组中,包括换行符在内,如果读取失败则返回 false。函数的语法格式如下:

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

file_get_contents()函数

file_get_contents()函数将文件的内容(fliename)读入到一个字符串中。如果没有 offset 和 maxlen参数 ,将从参数offset所指定的位置开始读取长度为 maxlen的一个字符串。如果读取失败那么就会返回false。函数语法格式如下;

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

该函数适用于二进制文件,是讲整个文件的内容读入到一个字符串中的首选方法。

下面的实例就是使用上面的三个函数分读取文件内容,具体代码如下:

<html>
<body>
<table width="500" border="1" cellpadding="0" cellspacing="0" >
    <tr>
        <td width="253" height="100" align="right" valign="middle" scope="col">使用 readfile()函数读取文件内容:</td>
        <td width="241" height="100" valign="middle" scope="col">
            <!--使用 readfile()函数读取tm.txt文件内容-->
            <?php readfile("tm.txt");?></td>
    </tr>
    <tr>
        <td  height="100" align="right" valign="middle">使用 file()函数读取文件内容:</td>
        <td  height="100" valign="middle" >
            <!--使用 file()函数读取tm.txt文件内容-->
            <?php
            $f_arr = file("tm.txt");
            foreach ($f_arr as $cont){
                echo $cont."<br>";
            }
            ?>
        </td>
    </tr>
    <tr>
        <td width="250" height="25" align="right" valign="middle" scope="col">使用flie_get_contents()函数读取文件内容:</td>
        <td  height="25" valign="middle" align="center" scope="col" >
            <!--使用 flie_get_contents()函数读取tm.txt文件内容-->
        <?php
            $f_chr = file_get_contents("tm.txt");
        echo $f_chr;
        ?>
        </td>
    </tr>
</table>
</body>
</html>

输出结果为:

20.png

2.读取一行数据:fgets()函数和fgetss()函数

(1) fgets()函数

fgets()函数用于一次读取一行数据。函数语法格式如下:

string fgets ( resource $handle [, int $length ] )

参数 handle 是被读取的文件,参数length是要读取的数据长度。函数能够实现从 handle 指定文件中读取一行并返回长度最大值为 length-1 个字节的字符串。在于带换行符,EOF 或者读取了 length-1 个自己后停止。如果忽略  length-1 参数,那么读取数据直到行结束。

(2)fgetss()函数

fgetss()函数是fgets()函数的变体,用于读取一行数据。同事,fgetss()函数会过滤掉被读取内容中的 HTML 和 PHP标记。函数语法格式如下:

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

该函数能够从读取的文件中过滤掉任何 html 和 PHP 标记,可以使用 allowable_tags 参数来控制哪些标记不被过滤掉。

下面实例使用上面那个函数分别读取一个文件,并显示出来。观察它们有什么区别。具体代码如下:

<html>
<body>
<table  border="1" cellpadding="0" cellspacing="0" >
    <tr>
        <td align="right" valign="middle" scope="col">使用fgets()函数:</td>
        <td valign="middle" scope="col" align="center">
            <!--使用fgets()函数读取fun.php文件-->
            <?php
             $fopen = fopen("1.php","rb");
            while (!feof($fopen)){
                echo fgets($fopen);
            }
            fclose($fopen);
            ?></td>
    </tr>
    <tr>
        <td  align="right" valign="middle">使用 fgetss()函数:</td>
        <td  align="center" valign="middle" >
            <!--使用fgetss()函数读取-->
            <?php
            $fopen = fopen("1.php","rb");
            while (!feof($fopen)){
                echo fgetss($fopen);
            }
            fclose($fopen);
            ?></td>
    </tr>
</table>
</body>
</html>

输出结果为:

21.png

本篇介绍了两种读取文件的方法,一个是读取整个文件,一个是读取一行数据的,在下面一篇文章我将介绍读取一个字符和指定长度的字串,具体内容请阅读《PHP文件处理—读取文件(一个字符,字串)》!

以上是PHP文件处理—如何读取文件(一行,整个文件)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn