首页 > 编程语言 >入门PHP就来我这(高级)29 ~ 文件系统

入门PHP就来我这(高级)29 ~ 文件系统

时间:2024-07-14 14:59:23浏览次数:18  
标签:文件 读取 -- 29 文件系统 PHP string 函数

 有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。


  上篇文章简单的实现了柱形图、折线图、3D饼图的制作,本篇文章我们开始着手文件系统的学习。

 1 文件处理

文件处理包括文件的读取、关闭和重写等,例如访问一个文件需要3步:打开文件、读取文件和关闭文件。其他的操作要么包含在读写文件中(如显示内容、写入内容等),要么与文件自身的属性有关系(如文件遍历、文件重命名等)。本文将对常用的文件处理技术进行详细的讲解。

1.1 打开文件

对文件进行操作首先要打开文件,这是进行数据存取的第一步。在PHP中使用fopen()函数打开文件,其语法如下:

resource fopen(string $filename, string $mode[, bool $use_include_path =false[,resource $context]])
  • filename是文件名
  • mode是打开方式
  • use_include_path是指定打开文件的指定路径,可选参数
  • context上下文支持参数

mode打开方式取值列表如下:

mode取值模式名称说明
r只读读模式--进行读取,文件指针位于文件的开头
r++只读读写模式--进行读写,文件指针位于文件的开头。在现有文件内容的末尾之前进行写入就会覆盖原有内容。
w只写写模式--进行写入文件,文件指针指向头文件。如果该文件存在,则所有文件内容被删除;否则函数将创建这个文件。
w+只写写模式--进行读写,文件指针指向头文件。如果该文件存在,则所有文件内容被删除;否则函数将创建这个文件。
x谨慎写写模式--打开文件,从文件头开始写。如果文件已经存在,则该文件将不会被打开,函数返回false,PHP将产生一个警告。
x++谨慎写读、写模式--打开文件,从文件头开始写,如果文件按已经存在,则文件将不会被打开,函数返回false,PHP将产生一个警告。
a追加追加模式--打开文件,文件指针指向尾文件。如果该文件已有内容,则将从文件末尾开始追加;如果该文件不存在,则函数将创建这个文件。
a+追加追加模式--打开文件,文件指针指向头文件。如果该文件已有内容,则将从文件末尾开始追加或读取;如果该文件不存在,则函数将创建这个文件。
b二进制二进制模式--用于与其他模式进行连接。如果文件系统能够区分二进制文件和文本文件,可能会使用它。Windows可以区分:UNIX则不区分。推荐使用这个选项,便于获取最大程度的可移植性。它t是默认模式。
t文本用于与其他模式相结合。这个模式知识Windows下的一个选项。
 1.2 关闭文件

对文件操作结束后应该关闭这个文件,否则可能引起错误。在PHP中使用fclose()函数关闭文件,语法如下:

bool fclose(resource handle)

handle 指向的文件关闭,成功返回true,失败返回false。其往往配合fopen()一起使用。

<?php
   //打开文件
   $file = fopen("../file.txt","rb");

   //... 操作

   // 关闭文件
   fclose($file);
 
?>
1.3 从文件中读取数据

读取文件数据分为读取整个文件数据、读取一行数据、读取一个字符和读取任意长度字符串操作。

1.3.1 读取整个文件数据

(1)readfile()函数

readfile()函数读取文件的时候不需要打开关闭文件,不需要echo/print等输出语句,直接写出文件路径即可。其语法如下:

int readfile(string $filename [, bool $use_include_path = false])
<?php 
   $res = readfile("./file/testFile.txt");
?>

(2)  file()函数

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

array file(string $filename [, int $flags = 0])
<?php 
   $resArr = file("./file/testFile.txt");
   
   echo "<pre>";
   print_r($resArr);
?>

 (3) file_get_contents()函数

将文件读入一个字符串。语法如下:

string file_get_contents( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen]]]])
  • offset 开始读取的位置
  • maxlen读取的字符串长度

<?php 
   $resArr = file_get_contents("./file/testFile.txt");
   
   echo $resArr;
?>

1.3.2 读取一行数据

读取一行数据的函数有两个fgets()函数和fgetss()函数。 

(1) fgets()函数

fgets()函数用于以此读取一行数据,语法如下:

string fgets(resource $handle [, int $length])
<?php 
   $res = fopen("./file/testFile.txt","rb");
  
   while(!feof($res)){
    echo fgets($res);
   }
   fclose($res);
   
?>

(2) fgetss()函数

fgetss()函数是fgets()的变体,用于读取一行数据,同时,fgetss()函数会过滤掉HTML标签,语法如下:

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

allowable_tags值就是指定的html标签,入"<span>",表示只保留HTML的<span>标签,其他标签都被过滤掉。

 文本内容如下:

123
abc
luTeacher
<span style="color:red;font-size:40px">mySpan</span>
<html>
 <body>
     <br>
    <h1>test html </h1>
 </body>
</html>
PHP
<?php 
   $res = fopen("./file/testFile.txt","rb");
  
   while(!feof($res)){
    echo fgetss($res,100,'<span>');
   }
   fclose($res);
   
?>

1.3.3 读取一个字符

(1)fgetc()函数

在对某个字符进行查找、替换时,需要有针对性地对某个字符进行读取。语法如下:

string fgetc(resource $handle)

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

<?php 
   $res = fopen("./file/testFile.txt","rb");
  
   while(!feof($res)){
    //一个字符一个字符的输出
    echo fgetc($res);
   }
   fclose($res);
   
?>

 1.3.4 读取任意长度的字符串

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

string fread(resource $handle, int $length)
<?php 
   header('Content-type:text/html;charset=utf-8');

   $res = fopen("./file/testFile.txt","rb");
   echo "原始内容:<br>";
   echo readfile('./file/testFile.txt')."<br><br><br>";
   echo"fread读取字符串内容:<br><br>";
   echo fread($res,18);
   fclose($res);
   
?>

 下一篇 PHP文件系统之写文件


大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。
另外,自己创建的一个技术qq群,玩转技术群,目前手头里有一批项目,前后端人员都需要,兼职,有技术的你欢迎加入,一起学习成长。

标签:文件,读取,--,29,文件系统,PHP,string,函数
From: https://blog.csdn.net/weixin_38298363/article/details/140416006

相关文章

  • 入门PHP就来我这(高级)15 ~ 图书删除功能
    有胆量你就来跟着路老师卷起来!--纯干货,技术知识分享路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。  今天给大家接着上篇文章实现图书删除功能,来实现删除图书信息记录行的功能。 1删除图书首先我们的开始页面在列表:当点击删除红色......
  • linux-卸载phpstudy
    需要sudo-i再用root角色去/usr/bin/phpstudy-uninstall再删掉rm-rf/usr/local/phpstudy`运行状态===========webpanelstopphpstudyrunning=安装完成==请用浏览器访问面板:外网:http://119.139.137.25:9080/9B7E96内网:http://192.168.137.128:9080/9B7E96系统初......
  • 【反悔贪心】P2949WorkSchedulingG+P4053[JSOI2007]建筑抢修题解
    这两天遇到了几个很神奇的题目——能反悔的贪心。赶紧记录一下。例1(用时一定模型)用时一定:每个任务完成的耗时都是一样的。题面:Luogu-P2949WorkSchedulingG大体思路是:先把所有任务按照截止时间从小到大排序,然后枚举,遇到一个能做任务的就把他做了,把他的贡献加入一个......
  • 最小数字游戏(Lc2974)——模拟+优先队列(小根堆)、排序+交换
    你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ,同时还有一个空数组 arr 。Alice和Bob决定玩一个游戏,游戏中每一轮Alice和Bob都会各自执行一次操作。游戏规则如下:每一轮,Alice先从 nums 中移除一个 最小 元素,然后Bob执行同样的操作。接着,Bob会将......
  • GB/T 40429-2021 汽车驾驶自动化分级
    中国国家标准GB/T40429-2021《汽车驾驶自动化分级》文章目录中国国家标准GB/T40429-2021《汽车驾驶自动化分级》前言1范围2术语和定义3驾驶自动化分级3.1驾驶自动化分级原则3.2驾驶自动化等级划分要素3.3驾驶自动化等级划分3.3.10级驾驶自动化3.3.21级驾驶自动化3.3.......
  • 操作系统真象还原:文件系统概述
    14.1文件系统概念简介这是一个网站有所有小节的代码实现,同时也包含了Bochs等文件14.1.1inode、间接块索引表、文件控制块FCB简介硬盘是低速设备,其读写单位是扇区,为了避免频繁访问硬盘,操作系统不会有了一扇区数据就去读写一次磁盘,往往等数据积攒到“足够大小”时才一次......
  • [BJDCTF2020]EzPHP 1
    信息收集,waf绕过打开后源码中可以看到这个东西,解码后是1nD3x.php<?phphighlight_file(__FILE__);error_reporting(0);$file="1nD3x.php";$shana=$_GET['shana'];$passwd=$_GET['passwd'];$arg='';$code='';echo&quo......
  • 腾讯im php对接
    参考:https://blog.51cto.com/u_15968310/6061423 1.下载安装 tls-sig-api-v2生成非管理员id的时候需要“自有帐号导入即时通信”、才能生成对应user_id的签名;导入时“Identifier”这个字段相当于user_id##说明此项目为tls-sig-api-v2版本php实现,之前非对称密钥无法使......
  • php将png转为jpg,可设置压缩率
    /***将PNG文件转换为JPG文件*@param$pngFilePathstringPNG文件路径*@param$jpgFilePathstringJPG文件路径*@param$qualityintJPG质量,0-100,值越低,压缩率越高*@returnvoid*@throwsException*/functionconvertPngToJpg($pngFilePath,$j......
  • php计算两张照片的相似度,范围:0-100
    可以是本地图片也可以是网络图片需要gd库/***计算图片相似度*@param$imagePath1string图片路径1*@param$imagePath2string图片路径2*@returnfloat|int0(完全两张图片)-100(两张一模一样的图片)*/functioncalculateImageSimilarity($imagePath1,$imag......