Php常用文件操作函数,正则表达式,个人学习总结
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>";