前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简明PHP进阶【5-文件处理】

简明PHP进阶【5-文件处理】

作者头像
Lemon黄
发布2019-10-08 17:48:01
9810
发布2019-10-08 17:48:01
举报
文章被收录于专栏:Lemon黄Lemon黄

名家之声

所谓科学的论辩,从总体上来说则是没有多大效果的,更不用说论辩几乎总是各持己见的这个事实。

——弗洛伊德

在PHP中后端开发中,像经常要接触到Excel文件的导入导出,这就涉及到文件处理。本节,就来介绍PHP中的文件处理。

1 文件打开与关闭

对数据存储入文件的第一步,首先咱得打开文件不是。在PHP中文件打开使用的函数是 fopen(),如下是函数语法:

代码语言:javascript
复制
int fopen(string filename,string mode);

参数中filename,要包括文件的完整路径和文件名,路径可以是相对路径也可以是绝对路径;参数mode表示文件的打开方式,如下所示:

文件打开方式

含义

rt

只读打开一个文本文件,只允许读数据

wt

只写打开或建立一个文本文件,只允许写数据

at

追加打开一个文本文件,并在文件末尾写数据

rb

只读打开一个二进制文件,只允许读数据

wb‍‍

只写打开或建立一个二进制文件,只允许写数据

ab

追加打开一个二进制文件,并在文件末尾写数据

rt+

读写打开一个文本文件,允许读和写

wt+

读写打开或建立一个文本文件,允许读写

at+

读写打开一个文本文件,允许读,或在文件末追加数据

rb+

读写打开一个二进制文件,允许读和写

wb+

读写打开或建立一个二进制文件,允许读和写

ab+

读写打开一个二进制文件,允许读,或在文件末追加数据

可以见得文件的打开方式由r、w、a、t、b 和 + 六个字符拼成,它们的含义做如下总结:

方式

含义

r(read)

w(write)

a(append)

追加

t(text)

文本文件,可省略不写

b(binary)

二进制文件

+

读和写

文件使用完毕,为了不占用资源,是需要及时关闭文件。PHP中关闭文件的函数是fclose(),如下为语法格式:

代码语言:javascript
复制
fclose(resource handle);

handle为我们要关闭的文件,注意是关闭文件的资源。

2 读取部分文件

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

在文件中,真对某一个字符进行查找,替换时,就需要对这个字符进行读取,在PHP中使用fgetc()函数进行字符读取。如下为函数的语法格式:

代码语言:javascript
复制
string fgetc(resource handle);

fgetc()函数从文件指针中读取字符,返回一个字符的字符串。该字符从handle指向的文件中得到。如下代码:

a.txt内容:

代码语言:javascript
复制
首先他们无视于你,而后是嘲笑你,接着是批斗你,再来就是你的胜利之日。--甘地

index.php中测试代码:

代码语言:javascript
复制
<?php
$f_open=fopen("a.txt","rt");  //打开文件
$chr=fgetc($f_open);            //读取一个字符
while(false!==$chr)             //判断是不是读到文件的末尾
{
  echo $chr;
  $chr=fgetc($f_open);
}
fclose($f_open);                //关闭文件
?>

浏览器中运行效果:

2、读取任意长度字符:fread()

在文件中,想要读取任意长度字符的函数使用 fread()函数,如下语法格式:

代码语言:javascript
复制
string fread(int handle,int length);

该函数从文件指针handle读取length个字节。在读取了length个字节数或到达文件末尾时,就会停止读取文件。

根据上面例子的文本,我们测试一下:

index.php中测试代码:

代码语言:javascript
复制
<?php
$f_open=fopen("a.txt","rt");  //打开文件
$chr=fread($f_open,5); 
echo $chr;
?>

浏览器下运行效果:由于读取的是字节,一个中文一般占据3个字符,而我们这里只读取5个字节,所以中文会显示乱码。

3、读取一行数据:fgets()和fgetss()

文件读取中,想要按行对文件读取,可以使用fgets()函数和fgetss()函数,如下是fgets()语法格式,fgetss()类似。

代码语言:javascript
复制
string fgets(int handle [,length]);

handle是被打开的文件,参数length是要读取的数据长度,函数能够实现从handle指向文件中读取一行返回长度最大值为length-1个字节的字符串,如果没有指定长度,默认为1KB。

而fgetss()函数是fgets()函数的变体,用于读取一行数据,同时fgetss函数会过滤掉被读取内容中的html和php标记,而fgetss()函数需要指定长度。

代码语言:javascript
复制
<?php
$f_open=fopen("a.txt","rt");  //打开文件
$chr=fgets($f_open,5); 
echo $chr;
?>

浏览器下运行效果:

3 文件处理读取整个文件:

想要读取整个文件,PHP中可以使用的函数是readfile()和file()函数。

1、readfile()函数

该函数用于读入一个文件,将读入的文件写入到输出缓冲,返回从文件中读入的字节数。如果出错返回false。如下语法格式:

代码语言:javascript
复制
readfile("a.txt");

2、file()

file()函数可以把文件读入到一个数组中,将文件作为一个数组来返回,数组中每个单元都是文件中相应的一行,包括换行符在内。失败将返回false。如下代码示例:

代码语言:javascript
复制
<?php
$chr=file("a.txt");
foreach($chr as $i=>$chr)
    echo  $i.$chr."<br>";
?>

浏览器运行效果:

4 写入文件

想在文件中写入数据,PHP中使用的函数是 fwrite()函数,如下语法格式:

代码语言:javascript
复制
int fwrite(resource handle,string string[,int length]);

把内容string写入文件指针handle处。如果指定了长度长度,当写入了length个字节,定入就会停止。如果文件内容长度小于length,则会无法写入。如下代打示例:

代码语言:javascript
复制
<?php
$chr=fopen("a.txt",'a');
if(!fwrite($chr,"尊称“圣雄甘地”")){
    print '不能写入';
    exit;
}
print '成功';
fclose($chr);
?>

浏览器下运行结果:

再去看下我们的文本文件,已经被写入:尊称“圣雄甘地”

5 删除文件

在PHP中,删除文件使用的函数是 ulink()函数。我们使用电脑都知道,文件要删除,前提是文件不能是在运行状态中。同理,在使用这个删除函数时,要确保文件是关闭的(fclose函数关闭文件)。成功删除返回true,否则返回false。

此函数需慎重使用,一经删除文件就无法恢复。

代码语言:javascript
复制
<?php
ulink("./a.txt");
?>

6 复制文件

在PHP中文件复制使用copy()函数,如下语法格式:

代码语言:javascript
复制
bool copy (string file1,string file2);

使用该函数将文件file1复制到file2。复制成功返回true,否则返回false。代码示例:

代码语言:javascript
复制
<?php
$file1="./a.txt";
$file2="./b.txt";
copy($file1,$file2); //从file1中复制到file2中。
readfile($file2);
?>

浏览器下运行效果:可以看到项目根目录下也生成文件 b.txt

7 移动和重命名文件

在PHP中移动和重命名文件都使用一个函数就可以解决,这个函数就是 rename()函数。如下函数语法:

代码语言:javascript
复制
bool rename(string oldname,string newname);

函数会把oldname重命名为newname,成功返回true,否则返回false。实现移动,则只要给指定的文件移动到另外一个路径下的文件夹中,不改变文件的名称,就实现了对指定文件的移动。如下代码示例:

代码语言:javascript
复制
<?php
$old_name="a.txt";
$new_name="c.txt";
if(rename($old_name,$new_name))
    echo "重命名成功<br>";
if(rename($new_name,"public/$new_name"))//要先有public目录存在
    echo "移动文件成功";
?>

浏览器下运行结果:在项目的目录中,a.txt被重命名为c.txt,并被移动到public目录中。

PHP中文件处理的相关函数,就介绍到这里,这些函数可一定要熟悉掌握哦,编码中设计到文件处理一定会使用到的哦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lemon黄 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档