PHP 读取文件内容fgetc、feof、fgets、fread的使用
在 PHP 中从文件中读取内容可以通过两种方式完成:
使用readfile()功能
使用fread()读取从打开的文件的内容。
使用读取文件 readfile()
该readfile()函数读取文件的全部内容并将其写入输出缓冲区。
如果我们有一个包含以下内容的文件info.txt:
我想学习: C语言 C++ 数据库 安卓 Python
我们可以使用该readfile()函数读取上述文件的全部内容并将其写入输出缓冲区。
<?php echo readfile("info.txt"); ?>
这个时候读取到的内容是整个文件的所有内容。
请注意,这里info.txt没有带路径,说明读取的文件与php文件在同一个文件夹下,如果需要读取其他位置的文件,请使用文件所在位置的路径,例如下面几种情况:
文件在根目录:/info.txt
文件在update文件夹:/update/info.txt
使用打开和读取文件 fread()
我们可以使用该fread()函数从已经打开的文件中读取内容。该fread()函数有两个参数:
首先是文件名
第二个参数指定要读取的内容的大小(以字节为单位)。
举个例子,如果我们有一个文件info1.txt,内容如下:
我喜欢编程,我喜欢php!
如果我们想读取文件的全部内容,我们将以读取模式打开文件,然后使用该fread()函数。
<?php // 打开文件 $myfile = fopen("info1.txt", "r"); // 读取文件内容 // fread() 函数 echo fread($myfile, filesize("info1.txt")); // 关闭文件 fclose($myfile); ?>
输出内容为:
我喜欢编程,我喜欢php!
我们使用filesize()函数来指定等于整个文件大小的字节大小,因此该fread()函数读取文件的整个内容。
但是,如果您只想打印文件中的部分内容,您可以直接在第二个参数中指定大小(1 个字节 = 1 个字符),如下所示,
<?php // 打开文件 $myfile = fopen("info1.txt", "r"); // 读取10个字节的内容 // fread() 函数 echo fread($myfile, 10); // 关闭文件 fclose($myfile); ?>
输出内容:
我喜欢编程
需要注意的是,每个汉字包含了2个字节,所以这里设置10只能输出5个中文字符,如果是英文则可以输出10个字母。
使用逐行读取文件 fgets()
fgets()函数文件中读取一行(直到换行符)。
测试一下读取info.txt文件
<?php // 打开文件 $myfile = fopen("info.txt", "r"); // 使用fgets()读取一行内容 echo fgets($myfile); // 关闭文件 fclose($myfile); ?>
输出结果为:
我想学习:
调用fgets()函数后文件指针移动到下一行,所以如果我们调用fgets()函数两次,我们将从文件中得到两行,
<?php // 打开文件 $myfile = fopen("info.txt", "r"); // 使用fgets()读取一行内容 echo fgets($myfile) . "<br>"; // 使用fgets()读取一行内容 echo fgets($myfile); // 关闭文件 fclose($myfile); ?>
输出内容:
我想学习: C 语言
使用获取文件结尾 feof()
如果文件指针位于文件末尾,则该函数feof()返回true,否则返回false.
该函数可用于遍历未知大小的文件,因为该feof()函数可用于检查是否到达文件尾。
让我们使用feof()andfgets()函数逐行读取和回显/打印文件studytonight-info.txt的内容。
<?php // 打开文件 $myfile = fopen("studytonight-info.txt", "r"); // 循环输出内容 !feof($myfile)用于检查是否到达了文件的尾部 如果没有则继续循环 如果到达则停止 while(!feof($myfile)) { //输出一行内容 echo fgets($myfile) . "<br>"; } // 关闭文件 fclose($myfile); ?>
输出内容:
我想学习: C语言 C++ 数据库 安卓 Python
逐字符读取文件 - fgetc()
我们可以使用函数fgetc()从头开始读取单个字符。
我们可以使用fgetc()函数和feof()函数来逐个字符地打印文件的全部内容。
如果您必须替换某个固定位置的字符,就需要用到这个方法。
例如:
<?php // 打开文件 $myfile = fopen("info.txt", "r"); // 循环读取文件 while(!feof($myfile)) { //读取一个字符的内容 echo fgetc($myfile); } // 关闭文件 fclose($myfile); ?>
输出内容:
我想学习:C语言C++数据库安卓Python