php中常用文件操作函数介绍

 更新时间:2016年11月25日 15:04  点击:1366
小编今天来给php初学者介绍php文件操作的常用函数使用方法总结,包括:文件读写,创建,查看文件属性,文件删除等等关于文件的操作。

在对一个文件进行访问之前,一般我们都需要判断文件是否存在,以免调用了不存在的文件导致错误。

php判断文件是否存在函数:file_exists(),结构形式如下:

file_exist($string);

参数$string为一个指向文件或目录的字符型变量,如果文件或目录存在,则返回true,否则返回false。

实例:

 代码如下 复制代码

<?php
 /* 判断post.php是否存在 */
 $file="post.php";
 if(file_exists($file)){
  echo "文件存在<br>";
 }
 else{
  echo "文件不存在<br>";
 }
 
 /* 判断images目录是否存在 */
 $category="images";
 if(file_exists($category)){
  echo "目录存在";
 }
 else{
  echo "目录不存在";
 } 
?>

php提供了一些访问文件属性的函数,可以获取文件的大小、类型、修改时间等

获取文件属性函数

函数名 作用 参数及返回值
filesize($string) 获取文件大小 参数$string为一个指向文件或目录的字符型变量。函数的返回值为整型变量,返回文件的大小,返回结果会被缓存。如果出错,则返回false。函数参数不能为远程文件。
filetype($string) 获取文件类型 参数$string为一个指向文件或目录的字符型变量。函数的返回值为字符型变量,返回结果会被缓存。
filemtime($string) 获取文件修改时间 参数$string为一个指向文件或目录的字符型变量。函数的返回值为整型变量,返回文件的修改时间。
fileatime($string) 获取文件访问时间 参数$string为一个指向文件或目录的字符型变量。函数的返回值为整型变量,返回文件的访问时间。
fileperms($string) 获取文件权限 参数$string为一个指向文件或目录的字符型变量。函数的返回值为整型变量,返回文件的相应权限,返回结果会被缓存。函数参数不能为远程文件。

实例:

 代码如下 复制代码

<?php
 $filename="php.txt";
 echo filesize($filename). "<br>";
 echo filetype($filename). "<br>";
 echo date("Y年 m月 d日",filemtime($filename)). "<br>";
 echo date("Y年 m月 d日",fileatime($filename)). "<br>";
 echo fileperms($filename). "<br>";
?>

在读取文件之前,必须先打开一个文件,php提供fopen()函数可以打开本地文件,也可以打开远程文件。其基本结构形式如下:

resource fopen (string $filename, string $mode)
参数filename是要打开的文件名。参数mode是要打开文件的方式,如下表所示:

fopen()中的mode参数说明
mode 说明
r 只读方式打开,将文件指针指向文件头。
r+ 读写方式打开,将文件指针指向文件头。
w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

fopen()函数返回一个值,这个值包含一个文件句柄的整数,用来向执行文件操作的函数标识该文件。这个值通常被称为指针,指针就像内存地址中的一个个房间的门好。如果php打开文件失败,那么这个值就是flase。

实例:

 代码如下 复制代码


 <?php
 fopen("php.txt","a"); /* 写入方式打开本地文件 */
 fopen("http://www.111cn.net/robots.txt","r"); /* 只读方式打开远程服务器文件 */
?>


首先建立一个”php.txt”的文件,内容如下:


 hello

php
1、fgetc()函数读取文件中的某个字符,其结构形式如下:

 

string fgetc(resource $handle)

参数$handle是已经被打开的文件指针,函数返回当前文件指针所指向的字符。如果文件指针指向文件末尾,则返回false。

实例:

 代码如下 复制代码

<?php
 $filename=fopen('php.txt','r');
 $string=fgetc($filename); /* 读取文件开头第一个字符 */
 echo $string;
?>

 

文件被打开后文件指针通常位于文件的开始位置。但是当对文件执行了一定操作后就很难判断此时php指针的位置了。

php文件指针位置查找函数ftell(),其结构形式如下:


 int ftell(resource $handle)
参数$handle是要查找指针的文件,通过该函数能够判断文件指针的位置,函数返回整数值。

实例:

 代码如下 复制代码

<?php
 $f=fopen("php.txt","r");
 fgets($f,2);
 echo ftell($f);
?>

php写文件函数fwrite()可以将所需的内容写入到目标文件中,结构形式如下:


int fwrite(resource $handle,string $string [,int $length])

参数$handle是要被写入的文件,采纳数$string是要写入的内容,参数$length可选,是要写入的长度。fwrite()函数返回写入的字符数,出现错误时返回false。

实例:

 代码如下 复制代码

<?php
 $filename="php.txt";
 $str1="第一次写入<br>";
 $str2="第二次写入";
 if(is_writable($filename)){  /* is_writable()函数判断文件是否可写 */
  $file=fopen($filename,"w"); /* 以写入方式打开文件 */
  $w1=fwrite($file,$str1); /* 将内容写入文件 */
  $w2=fwrite($file,$str2);
   $file=fopen($filename,"r"); 
   if($w1) echo fgets($file); /* 读取文件内容 */
   else echo "写入不成功"; 
 }
 else echo "文件不可写";
?>


php指针函数rewind()可以将文件位置指针设到文件的开头,其结构形式如下:


bool rewind (resource $handle );

函数返回一个布尔值,如果成功则返回true,失败则返回false。

实例:

 代码如下 复制代码

<?php
 $f=fopen("php.txt","r");
 echo fgets($f)."<br>";  /*输出第一行*/
 echo fgets($f)."<br>";  /*输出第二行*/
 rewind($f);             /*指针返回文件头*/
 echo fgets($f);         /*输出第一行*/   
?>

本文章来给大家介绍php中基本的循环语句的使用方法,包括for循环,while循环与do while循环的使用方法,本文章很适合于php初学入门者哦。

用for语句可以控制多个变量,从而实现多重循环的高级应用。

下面看一个用for语句输出9*9乘法表的程序:

 代码如下 复制代码

<?php
  for($i=1;$i<=9;$i++){
    for($j=1;$j<=$i;$j++){
   $sum=$i*$j;
   echo $sum ."t";
 }
 echo "<br>";
  } 
?>

除了前面提到的while循环语句,php还提供了for循环语句实现同样的功能。而且for语句可以实现更为复杂更多功能的循环,任何while循环都可以用for循环来代替。

基本结构形式:

for(表达式1;表达式2;表达式3){
    执行语句体
}

其执行过程如下:

1、先执行表达式1;

2、接着判断表达式2的真假,若为假则跳出for循环执行下一个php语句,若为真则进入for循环执行语句体;

3、然后执行表达式3;

4、返回第2步循环运行;

5、直至循环结束跳出for语句。

流程图:

实例:

 代码如下 复制代码

<?php
for($i=0;$i<=9;$i++){
 $sum+=$i;
 echo $sum ."t";
}
?>


do…while循环语句是while循环的变体,功能类似于while,只是在其执行循环后再检查表达式是否为真,基本结构为:

 do{;
 语句体
}while(表达式)
do…while循环语句先执行一次语句体,然后判断表达式的条件,如果值为真则返回再循环一次,为假则跳出循环。

实例:

 代码如下 复制代码

<?php
 $i=1;
 $sum=0;
 do{
  $sum +=$i;
  echo $sum ."n";
  $i++;
 }while($i<=10)
?>

 

while循环语句
while语句是php程序中用来实现循环的语句,其基本结构如下:

while(判断语句){
 执行语句体;
}
判断语句一般用关系运算符或者逻辑运算符作为判断条件。

当判断语句为真实则执行语句体,然后再检查表达式的值,如果仍然为真,则执行语句再次被执行。直到判断语句为假时退出循环。

实例:

 代码如下 复制代码

<?php
 $i=0;
 while($i<9){
  $i++;
  echo $i ."<br>";
 }
?>


while和do…while的区别:

两者的主要区别是do…while语句的第一次循环肯定要执行。

若两者循环体执行语句相同,它们的运行结果一般也相同,但在表达式一开始为假时,两种循环的运行结果就有所不同。

实例:

 代码如下 复制代码

<?php
 /* while循环 */
 $a=9;  
 while($a>10){
  echo "进入while循环语句体";
 }
 /* do...while循环 */
 do{   
  echo "进入do...while循环语句体";
 }while($a>10) 
?>


php退出循环的方法有break和continu语句,它们的作用都是当判断条件满足时则跳出循环程序。

break语句用法:
当判断条件的值为真时提前结束整个循环,接着执行循环以外的语句。

实例:

 代码如下 复制代码

<?php
 /* 输出面积在100以内的圆形面积 */
 for($r=1;;$r++){
  $A=3.14*$r*$r;
  if($A>50) break; /* 如果没有break则形成死循环 */
  echo $A ."<br>";
 }
?>

continue语句用法:
continue语句的作用是结束本次循环而进入下一次循环,并不是退出整个循环程序。

实例:

 代码如下 复制代码

<?php
 /* 输出10以内的单数 */
 for($i=1;$i<=10;$i++){
  if($i%2==0) continue;
  echo $i ."t";
 }
?>

break和continue语句的区别:

从上面的例子我们可以看到,break和continue语句在退出循环的作用是有着本质区别的。

continue只是结束本次循环,接着再返回循环体继续执行下次循环;

break则是立即终止整个循环,不再重复执行。

本文章给大家总结了php目录操作一些函数与使用方法包括有:创建目录、遍历目录、读取目录、关闭目录、打开目录等等关于php目录操作函数,有需要的朋友可参考。

php创建目录文件夹函数mkdir(),其结构形式如下:

kdir(string $dirname,[int $mode])

参数$dirname为想要创建目录的名称,参数$mode可选,为整型变量,表示创建模式。

实例:

 代码如下 复制代码

 <?php
 $name="php";
 $d=mkdir($name,0777); /* 0777表示最大访问权限 */
 if($d){
  echo "创建成功";
 }
 else echo "创建不成功";
?>


php遍历目录的方法很多,这里通过实例详细介绍php遍历目录下文件的方法。

代码:

 代码如下 复制代码
 <?php
 function directory($dir){ /* 声明函数 */
  $dp=opendir($dir); /* 打开目录 */
  while($file=readdir($dp)){ /* 读取目录 */
   if($file !="." && $file !=".."){ /* 判断是否有"."或者".."文件 */
    $path=$dir. "/". $file; /* 取得目录路径 */
    if(is_dir($path)){ /* 判断是否有子目录 */
     directory($path); /* 函数递归调用 */
    }
    else echo $path. "<br>"; /* 显示文件 */
   }
  }
  closedir($dp);
 }
 
 directory("e:wp");
?>

php读取目录函数readdir()可以读取该目录下所有文件以及文件夹,其结构形式如下:


readdir($dp);

参数$dp为使用函数opendir()打开目录返回的资源对象,函数返回目录下的文件名。

实例:

 代码如下 复制代码

 <?php
 $dir=opendir("study");
 while($read=readdir($dir)){
  print($read."<br>");
 }
?>

php关闭目录函数用closedir(),其结构形式如下:

closedir($dp)

参数$dp为使用函数opendir()打开目录返回的资源对象。

实例:

 代码如下 复制代码
<?php
 $mulu="study";
 $dir=opendir($mulu);
 closedir($dir);
?>

用函数closedir()关闭目录成功并不返回值1,故不能通过if语句去判断是否关闭成功

前面介绍了php一系列的文件操作,接着笔者再介绍怎么对目录进行操作。php目录函数功能跟文件函数差不多,这里先介绍打开目录函数opendir(),其结构形式如下:


opendir(string $path)


参数$path为要打开目录的路径,函数将返回一个打开目录的句柄,用于存储当前的目录资源。打开目录之前首先要判断目录是否存在,用is_dir()函数。

实例:

 代码如下 复制代码

<?php
 if (is_dir("stufdy")){
  opendir("studfy");
  print_r("目录成功打开");
 }
 else
 echo "目录不存在";
?>

php指针函数rewind()可以将文件位置指针设到文件的开头,其结构形式如下:


 bool rewind (resource $handle );
函数返回一个布尔值,如果成功则返回true,失败则返回false。

实例:

 代码如下 复制代码


 <?php
 $f=fopen("php.txt","r");
 echo fgets($f)."<br>";  /*输出第一行*/
 echo fgets($f)."<br>";  /*输出第二行*/
 rewind($f);             /*指针返回文件头*/
 echo fgets($f);         /*输出第一行*/   
?>

在php中header函数的使用很大,header不但可以向客户端发送原始的 HTTP 报头信息,同时还可以直接实现文件下载操作,接下来小编给大家介绍欢迎各位朋友参考。

header函数最常用的不是用于下载而是用于发送http类的

跳转

它会执行最后一个,不过是有条件的,例如:

 代码如下 复制代码

header('Location:http://www.111cn.net");
header('Location:http://www.g.cn');
header('Location:http://www.baidu.com');

这个就会跳到百度

header('Location:http://www.111cn.net');echo '烈火网;
header('Location:http://www.g.cn');
header('Location:http://www.baidu.com');

这个就会跳到google


发送状态

输出状态值到浏览器,主要用于访问权限控制

 代码如下 复制代码

<?php
header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized');
?>

比如要限制一个用户不能访问该页,则可设置状态为404,如下所示,这样浏览器就显示为即该页不存在

 代码如下 复制代码

<?php
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
?>

下载


 代码如下 复制代码

<?php
$filename = '路径+实际文件名';
//文件的类型
header('Content-type: application/pdf');
//下载显示的名字
header('Content-Disposition: attachment; filename="保存时的文件名.pdf"');
readfile("$filename");
exit();
?>

header函数进行相应的转化,

 代码如下 复制代码
header(‘Content-type: application/octet-stream’);//输出的类型,根据下面提供的MIME表,选择相应的类型
header(‘Content-Disposition: attachment; filename=”下载显示名字.rar”‘);//下载显示的名字
readfile(‘服务器上的文件名.rar’);//

要下的文件,包括路径

常用的MIME类型
.doc    application/msword
.docx   application/vnd.openxmlformats-officedocument.wordprocessingml.document
.rtf    application/rtf
.xls    application/vnd.ms-excel application/x-excel
.xlsx   application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ppt    application/vnd.ms-powerpoint
.pptx   application/vnd.openxmlformats-officedocument.presentationml.presentation
.pps   application/vnd.ms-powerpoint
.ppsx  application/vnd.openxmlformats-officedocument.presentationml.slideshow
.pdf   application/pdf
.swf   application/x-shockwave-flash
.dll   application/x-msdownload
.exe   application/octet-stream
.msi   application/octet-stream
.chm   application/octet-stream
.cab   application/octet-stream
.ocx   application/octet-stream
.rar  application/octet-stream
.tar  application/x-tar
.tgz  application/x-compressed
.zip  application/x-zip-compressed
.z    application/x-compress
.wav   audio/wav
.wma   audio/x-ms-wma
.wmv   video/x-ms-wmv
.mp3 .mp2 .mpe .mpeg .mpg   audio/mpeg
.rm   application/vnd.rn-realmedia
.mid .midi .rmi   audio/mid
.bmp   image/bmp
.gif   image/gif
.png   image/png
.tif .tiff    image/tiff
.jpe .jpeg .jpg    image/jpeg
.txt  text/plain
.xml  text/xml
.html text/html
.css  text/css
.js   text/javascript

在php开发时我们经常会碰到要删除数组中指定指定内容,但数组是特殊变量我们不能直接利用replace进行替换的,需要一些方法来操作,下面我来给大家介绍操作办法。

如果我们知道数组元素的名字这个就好办了

按键名来删除数组中指定数组元素

 代码如下 复制代码

$barray = array('a'=>1,'b'=>2,'wod'=>3,'c'=>4,'abc'=>5);
$del ='b';
unset($barray[$del]);//结果为


Array
(
    [a] => 1
    [wod] => 3
    [c] => 4
    [abc] => 5
)


如果有多个数组要同时删除,上面办法是解决不了,我们可以利用array_diff函数来操作

 代码如下 复制代码

$a1=array("Cat","Dog","Horse",'dff','dfdf','www');
$a2=array("dff","Horse","Dog");
$a1 = array_diff($a1,$a2);
sort($a1);
print_r($a1);

Array
(
    [0] => Cat
    [1] => dfdf
    [2] => www
)

例2

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false

 代码如下 复制代码


$array = array('1', '2', '3', '4', '5');

$del_value = 3;
unset($array[array_search($del_value , $array)]);//利用unset删除这个元素

print_r($array);

输出

array('1', '2', '4', '5');

array_filter()
调用方式:array_filter($array)
参数说明:$array 是操作的对象,我们将删除其中的空元素

实例:

 代码如下 复制代码

<?php
    $array = ('a' => "abc", 'b' => "bcd",'c' =>"cde",'d' =>"def",'e'=>"");
    array_filter($array);
    echo "<pre>";
    print_r($array);
?>

结果:

Array (

     [a] => abc

     [b] => bcd

     [c] => cde

    [d] => def

   )

上面人方法删除的都会不会重建索引的,下面我来给大家介绍一个删除数组元素并重建数组索引的方法

 代码如下 复制代码

function array_remove(&$arr,$offset){ 
    array_splice($arr,$offset,1); 


$a = array('a','b','c','d'); 
array_remove($a,2); 
print_r($a);

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04