时间:2021-07-01 10:21:17 帮助过:17人阅读
相对打开和关闭文件来说,读写文件更复杂一些。这里主要从读取数据和写入数据两方面进行讲解。
那么在上一篇文章《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文件处理—如何读取文件(一行,整个文件)的详细内容,更多请关注Gxl网其它相关文章!