牛骨文教育服务平台(让学习变的简单)
博文笔记

Php常用文件操作函数,正则表达式,个人学习总结

创建时间:2014-11-19 投稿人: 浏览次数:1129

Php常用文件操作函数

 

//echo basename($filename);//获取文件的基本文件名

chdir($path);//将当前目录转到指定的path目录

 if(mkdir($filename)){ //mkdir创建目录,创建成功返回true/false

copy($source,$dest),将文件从原路径拷贝到目的路经

dir(路径如c:/windows),返回一个资源对象,该对象

有$file = $dir->read(),返回资源对象下的一条目录或者文件

$dir->path返回目录。

$string = dirname(具体文件的路径),返回除了文件名的路径

echo disk_free_space("f:/");返回f盘可用的字节数

echo disk_total_space("f:/");返回f盘总的字节数

feof($fp)判断文件指针是否读到文件末尾,是则返回真,否则返回false,$fp为

fopen返回的。fseek($fp,3)表示将文件当前的指针设定为第三字节处(默认)。

fseek($fp,3,SEEK_CUR)表示设定的位置为当前位置+3。

fgetc($fp),返回文件指针所在位置的字符

fgets($fp,length(1024)),读取文件指针所在行指定长度的内容,默认长度为1024b

$bool = file_exists(文件/目录地址),判断文件或者目录是否存在

file_get_contents(文件路径)将文件内容作为一个字符串进行返回

echo file_put_contents("1.txt",":缪林",FILE_APPEND);

将字符串写入到文件中,。如果文件不存在,则创建一个新文件。添加了file_append

后从文件末尾插入字符串,否则默认覆盖前面的内容,该函数返回插入的字符数量。

读取图片二进制并申城另一张图片:

$img = file_get_contents("1.jpg");

file_put_contents("2.jpg",$img);

echo "<img src="2.jpg"  />";

file(文件地址)返回一个数组,把文件的每一行读取作为一个数组元素存储。

echo date("Y-m-dH:i:s",fileatime("2.jpg"));返回文件上次被访问的时间

filectime(文件)返回上次文件inode被修改/创建的时间

filemtime(文件)返回文件上次被修改的时间

filesize(file)返回文件大小(字节数)

filetype(file) return the type of the file,结果为file/dir,文件还是目录.

bool flock($fp,operation),锁定文件

fopen($fp,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 以及以后的版本所支持,仅能用于本地文件。

B(rb读二进制,wb写二进制):二进制,T:文本模式(仅windows下的模式)

 

fwrite(file,string,length)fwrite() 把 string 的内容写入文件指针file 处。

如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停

止,视乎先碰到哪种情况。fwrite() 返回写入的字符数,出现错误时则返回 false。

fwrite($fp,"缪林MBA硕士 ");写入之后换行,一定要双引号括住

 

fread($fp,length)读取文件一定长度的内容。

fstat($fp),返回数组,包含文件的各种创建修改信息

ftell($fp)获取文件的指针位置

getcwd(void);返回当前文件的工作目录。

is_dir(file)如果当前的file是一个目录并且目录存在,则返回true

mkdir("./kk/")创建目录。

rmdir("./mm/")删除目录。

is_executable("./qq.exe")判断是否为可执行文件,是则returntrue.

is_file("/.../");判断是否为合法文件,是否存在。

is_link("")判断是否为符号连接,时则true

is_readable()是否可读

is_uploaded_file(filename完整路径)判断是否为httppost方式上传文件

move_uploaded_file($_FILES["filename"]["tmp_name"],$path.$_FILES

["filename"]["name"]),两边都要是具体的文件路径,执行上传,成功返回true.

is_writable(filename)是否可写。

$fp = opendir("../");while($file =readdir($fp))打开目录,读取子目录或者子

文件,readdir读取目录文件指针所指的文件,并返回文件名。

$array = pathinfo("./1.php");返回指定文件的相关信息

array (size=4)

 "dirname" => string "." (length=1)文件路径

 "basename" => string "filesystem.php" (length=14)文件全名

 "extension" => string "php" (length=3)扩展名

 "filename" => string "filesystem" (length=10仅仅文件名

以管道方式打开文件,文件指针只能单向移动,并且只能读或者只能写。

$fp = popen("../q.php","a");pclose($fp);

$i = readfile("具体文件的路径和名称");读取文件的内容并加入到输出缓冲(直接输

出),并返回文件内容的长度。

string = realpath("文件路径和文件名"),返回规范的绝对路径。

bool rename("c:/ww.txt"旧,"c:/ml.txt"新)为文件重命名,

rewind($fp),将文件指针指向起始位置,相当于fseek($fp,0)

void rewinddir(dir_handle),将目录指针移动到顶端(.目录)。

$array = scandir("c:/windows",1)返回一个数组,包含指定目录下的所有目录和文

件。如果参数不是目录,则返回false。1表示将读取的文件目录按字母顺序降序。

string = tempnam("../ml"路径,"ml"临时文件前缀名)生成一个唯一名字的临时文件

,目录不存在则创建,创建文件成功则返回新文件的路径名

bool touch(filename路径[,time,atime]),设定文件的访问修改时间设置为指定时间

unlink(string filename)删除文件,返回true

 

php正则表达式整理

//正则表达式个人笔录

//术语:定界符;字符域;修饰符;限定符;脱字符;通配符(正向/反向预查);反向引用;惰性匹配;注释;零字符宽。

//===========定界符============//

//通常使用“/”作为定界符作为开始和结束,也可以使用#。使用#的时候一般是在字符串里面很多/字符的时候,因为正则需要对/进行转义。

//使用"#"定界符的代码如下.这个时候对"/"就不转义!

// $regex ="#^http://([w.]+)/([w]+)/([w]+).html$#i";

// $str ="http://www.youku.com/show_page/id_ABCDEFG.html";

//==============¤ 修饰符:用于改变正则表达式的行为。===========//

//i,忽略大小写;x,忽略空格;s,设定了此修饰符,模式中的(.)匹配所有的字符,包括换行符,没有设定的话,则不包括换行符。

//=================字符域:[w]用方括号扩起来的部分就是字符域==========//

//==============限定符==================//

//限定符:如[w]{3,5}或者[w]*或者[w]+这些[w]后面的符号都表示限定符。

//现介绍具体意义。{3,5}表示3到5个字符。{3,}超过3个字符,{,5}最多5个,{3}三个字符。 * 表示0到多个, + 表示1到多个。

//=============脱字符==================

//放在字符域(如:[^w])中表示否定(不包括的意思)——“反向选择”,放在表达式之前,表示以当前这个字符开始。(/^n/i,表示以n开头)。

//注意,我们经常管""叫"跳脱字符"。用于转义一些特殊符号,如".","/"

//=============================通配符============//

//通配符(lookarounds):断言某些字符串中某些字符的存在与否!lookarounds分两种:lookaheads(正向预查 ?=)和lookbehinds(反向预查?<=)。

// 正向预查:(?=) 相对应的 (?!)表示否定意思,反向预查:(?<=) 相对应的 (?<!)表示否定意思,前后紧跟字符

//例子:$regex = "/(?<=c)d(?=e)/";  /* d 前面紧跟c, d 后面紧跟e*/

//$regex ="/(?<!c)d(?!e)/";  /* d 前面不紧跟c, d 后面不紧跟e*/

//================================零字符宽度============//

//字符宽度:零验证零字符代码

// $regex ="/HE(?=L)LO/i";

// $str = "HELLO";说明:(?=L)意思是HE后面紧跟一个L字符。但是(?=L)本身不占字符,要与(L)区分,(L)本身占一个字符。

//=====================惰性匹配===========//

/* 格式:限定符?

原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个。

$regex = "/heL*?/i";

$str ="heLLLLLLLLLLLLLLLL";匹配结果he */

//==============================正则表达式的注释============//

//主要用于复杂的正则表达式,格式:(?#注释内容)

//例如:^host=(?<!.)([d.]+)(?!.)                 (?#主机地址)

/* 特殊字符    解释

    *       0到多次

    +      1到多次还可以写成{1,}

    ?      0或1次

    .      匹配除换行符外的所有单个的字符

    w     [a-zA-Z0-9_]

    s     空白字符(空格,换行符,回车符)[ ]

    d     [0-9]*/

// S 匹配任何非空白字符。等价于 [^ f v]。 W:用于匹配所有与w不匹配的字符;

//===================捕获数据(反向引用)=================//

//指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。调用格式: 编号(如1)。

//避免捕获数据,格式:(?:pattern),命名捕获组格式:(?P<组名>) 调用方式 (?P=组名)

/*

$regex ="/(?P<author>chuanshanjia)[s]Is[s](?P=author)/i";

$str ="author:chuanshanjia Is chuanshanjia"; */

 

把关于正则的案例content.php代码 :

<?php

 

       //需求

 

 

       $str="ajkfda;ls3345dkjf;lsakjfsal;;lkajf8900dl2345sa2345k";

       //请从$str这个字符串中找出连续四个数的内容

       //33458900 2345

       //去一个大字符串,找出满足某个规范的内容.

       //d表示一个任意的数

       $reg="/dddd/i";

       //$reg:表示你的规则

       //$str:表示你哪个串中找

       //$res:找出的结果放在$res变量是个数组

       //preg_match这个函数是找到一个就停止匹配

       //preg_match_all这个函数可以匹配所有

      

       //举例

       $str2="1111akldjalfdkj9999laskd0000";

       //请从$str这个字符串中找出连续四个数的内容,四个数必须一样.

       //说明

       //正则规范的格式: /规范/i   i在匹配时,不区分大小写

       //d表示任意一个数

       //(d)表示是一个子表达式

       //1 : 表示第一个子表达式的内容,应该出现这

       //{3}表示出现3次

      

       $reg2="/(d)1{3}/i";

      

 

       //举例

       //xxx-yyy-zzz

       $str3="111-555-666kjaldjasl;f888-000-555"; 

       //请大家找出满足 xxx-yyy-zzz 这种规则的内容,正则规范怎样写

       $reg3="/(d)1{2}-(d)2{2}-(d)3{2}/i";

 

       //举例

       $str4="111-575-111kjaldjasl;f888-060-888"; 

       //请大家找出满足 xxx-yzy-xxx 这种规则的内容,正则规范怎样写

       $reg4="/(d)1{2}-(d)d2-1{3}/i";

 

       //举例

       $str5="hanh*u#$%&n77ping@tom.com";

       //请大家验证一下,是不是一个电子邮件

       //比如我们认为 满足如下条件就是一个电子邮件

       //1.必须有@

       //2.@前面是a-z  或者A-Z 或者 _ 字符

       //3.要求必须是sina 和sohu

       //4.必须 . 后缀是com或者cn

       //说明: ^表示必须以什么开头

       //(sina|sohu)表示出现 sina 或者 sohu

       //. 出现.本身,如果不转义  .匹配除了 外的所有字符

       //$表示以什么结尾 .不带[]

       $reg5="/^(dD)@(sina|sohu|tom).(com|cn)$/i";

      

       if(preg_match($reg5,$str5,$res)==1){

              echo"是电子邮件";

       }else{

              echo"不是";

       }

 

       echo"<pre>";

       print_r($res);

       echo"</pre>";


给你一个字符串. $str=“jakfdl,韩顺平abc";

请你,找出其中的中文?

 

走码:     

<?php

 

       $str="abckjdfaakldsfj北京你好897abd张90";

       //需求是请查询出有多少汉字,多少英文,多少数

       //思路, 汉字的utf-8编码的范围 x4e00-x9fa5

 

       $reg1="/[x{4e00}-x{9fa5}]/iu";

 

       preg_match_all($reg1,$str,$res);

 

       echo"汉字有".count($res[0])."个";

 

       echo"<pre>";

       print_r($res);

       echo"</pre>";

 

 

       $reg2="/[a-zA-Z]/i";

 

       preg_match_all($reg2,$str,$res2);

 

       echo"字母有".count($res2[0])."个";

 

       echo"<pre>";

       print_r($res2);

       echo"</pre>";

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。