PHP文件处理--读取文件

读取文件

利用PHP提供的文件处理函数,可以读取一个字符、一行字符串或者整个文件,也可以读取任意长度的字串。

1。读取一个字符:fgetc()

在对某一个字符进行查找、替换时,就需要有针对的对某个字符进行读取,在PHP中可以使用fgetc()函数实现此功能。

语法如下:

string fgetc(resource handle)

该函数返回一个字符,该字符从handle指向文件中得到,遇到EOF则返回false。

注意:该函数可能返回布尔值 false,但也可能返回一个与 false 等值的非布尔值,例如 0 或者 ""。

注释:EOF----C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。

例如:

$fopen=fopen('./test.txt','rb');
while(false!==($chr=fgetc($fopen))){
echo $chr;
}
fclose($fopen);
运行结果为

107sdfsdf网站工作室



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

(1)fgets()函数

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

string fgets(int handle[,int length])

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

例如:

$fopen=fopen('./test.txt','rb');
while(!feof($fopen)){//使用feof()函数测试指针是否到了文件结束的位置
echo fgets($fopen)."<br>";//输出当前行
}
fclose($fopen);
运行结果为:

107sdfsdf网站工作室 

123234 
nihao


(2)fgetss()函数

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

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

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

例如:

分别使用fgets()函数和fgetss()函数读取test.php文件并输出结果。

$fopen = fopen('./test.php', 'rb');
while (!feof($fopen)) {
echo fgets($fopen) . "<br>";
}
fclose($fopen);
echo "------------<br>";
$fopen = fopen('./test.php', 'rb');
while (!feof($fopen)) {
echo fgetss($fopen) . "<br>";
}
fclose($fopen);


注test.php文件

运行结果如下


3。读取任意长度的字符串:fread()

fread()函数可以从文件中读取指定长度的数据,语法如下:

string fread(int handle,int length)

参数handle为指向的文件资源,length是要读取的字节数。当函数读取length个字节或到达EOF时,停止执行。

例如:

$fp=fopen("./test.txt","rb");
echo fread($fp,4);//使用fread()函数读取文件内容的前4个字节
echo "<br>";
echo fread($fp,filesize("./test.txt"));//读取其余的文件内容
运行结果为:

107s
dfsdf网站工作室 123234 nihao



4。读取整个文件:

readfile()、file()和file_get_contents()

(1)readfile()函数

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

若成功,则返回从文件中读入的字节数。若失败,则返回 false。您可以通过 @readfile() 形式调用该函数,来隐藏错误信息。

语法

readfile(filename,include_path,context)
参数 描述
filename 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜索文件,可以使用该参数并将其设为 true。
context 可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

说明

对 context 参数的支持是 PHP 5.0.0 添加的。

注:

使用readfile()函数,不需要打开/关闭文件,不需要"echo/print"等输出语句,直接写文件路径即可。

(2)file()函数

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

file(path,include_path,context)
参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

说明

对 context 的支持是 PHP 5.0.0 添加的。

返回的数组中每一行都包括了行结束符,因此如果不需要行结束符时还需要使用 rtrim() 函数。

(3)file_get_contents()函数

该函数将文件内容(filename)读入一个字符串,如果有offset和maxlen参数,将在参数offset所指定的位置开始读取长度为maxlen的内容。如果失败则返回false。

语法如下:

file_get_contents(path,include_path,context,start,max_length)
参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。

说明

对 context 参数的支持是 PHP 5.0.0 添加的。

例如:

使用readfile()函数、file()函数和file_get_contents()函数分别读取文件count.txt的内容,代码如下:

//使用readfile()函数读取
readfile("test.txt");
echo "<br>";
//使用file函数获取test.txt的内容
$f_arr=file("test.txt");
print_r($f_arr);
echo "<br>";
foreach($f_arr as $value){
    echo $value;
}
echo "<br>";
//使用file_get_contents()函数读取
$f_chr=file_get_contents("test.txt");
echo $f_chr;


运行结果为:

107sdfsdf网站工作室 123234 nihao
Array ( [0] => 107sdfsdf网站工作室 [1] => [2] => 123234 [3] => nihao ) 
107sdfsdf网站工作室 123234 nihao
107sdfsdf网站工作室 123234 nihao




  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值