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>
输出结果为:
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>
输出结果为:
本篇介绍了两种读取文件的方法,一个是读取整个文件,一个是读取一行数据的,在下面一篇文章我将介绍读取一个字符和指定长度的字串,具体内容请阅读《PHP文件处理—读取文件(一个字符,字串)》!
以上是PHP文件处理—如何读取文件(一行,整个文件)的详细内容。更多信息请关注PHP中文网其他相关文章!