一、正则表达式
正则表达式是由普通字符和特殊字符组成的字符串,描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作!
例如: / a /
就是一个正则表达式
二、定界符
一般习惯使用正斜线/
作为定界符
除了字母、数字、和反斜线以外的字符都可以作为定界符,如:
#
!
{}
|
定界符要放在表达式的起始位置,前后一致
三、普通字符
如:a-z、A-Z、单引号,双引号
四、元字符
元字符是指正则表达式中有特殊含义的字符
常见的一些元字符:
\d 匹配任意一个十进制数字,等价于0-9
\D 匹配任意一个除十进制数字以外的字符
\s 匹配任意一个空白字符,如:换页符、换行符、回车符、制表符、垂直制表符
\S 匹配除空白字符以外的任意一个字符
\w 匹配任意一个数字或字母或下划线
\W 匹配除数字或字母或下划线的任意一个字符
. 匹配除换行符以外的任意一个字符
* 匹配0次、或1次、或多次其前面的字符
*
+ 匹配1次或多次其前面的字符
+
? 匹配0次或1次其前面的字符
{n} 表示其前面的字符恰好出现n次
{n,} 表示其前面的字符出现的次数不少于n次
{n,m} 表示其前面的字符至少出现n次,最多出现m次
.*配合使用,默认情况下是贪婪匹配(尽可能多的去匹配字符)
.*后面加一个 ? 可以解决贪婪匹配的问题,懒惰匹配
^ 或 \A 匹配字符串开始位置(该符号应放在开头)(目标字符串在开头时才能匹配到)
$ 或 \Z 匹配字符串结束位置(该符号应放在末尾)(目标字符串在末尾时才能匹配到)
^和$配合使用 只能匹配到^和$中间的字符串
| (或),可以匹配到|连接的任意一个字符串
[] 可以匹配括号中任意的一个字符
[^] 可以匹配除括号中的字符以外的任意一个字符
() 把括号中的内容作为一个整体以便获取
在末尾加\\数字,\\数字代表第几个括号里的内容
五、模式修正符
模式修正符是放在正则表达式的定界符之后的,用于增强正则表达式的处理能力,可多个搭配使用。
常见模式修正符
i 匹配时不分大小写
m 多行匹配
使用条件:
1)目标字符串中必须包含"\n"(字符串中的"\n"表示新一行的开始)
2)正则表达式中必须出现^或$
基础知识:
Windows中的换行是通过(\r\n)来实现的
Linux中的换行是通过(\n)来完成的
s 可以让 . 匹配所有字符包括换行符(\n)
U 禁止贪婪匹配
六、与正则表达式配合的函数
1、preg_match()
//执行一次正则表达式匹配(只要匹配到第一个符合要求的,就结束匹配)
第一个参数:正则表达式
第二个参数:目标字符串
第三个参数(可选):如果传入则会被填充为搜索结果
第四个参数(可选):可以传PREG_OFFSET_CAPTURE进入
第五个参数(可选):可以传一个数字,来表示从目标字符串的哪个位置开始搜索(从0开始数)
2、preg_match_all()
//执行一个全局表达式匹配(从字符串开头匹配到末尾,把符合的要求的全都匹配出来)
3、preg_replace()
//执行一个正则表达式的搜索和替换
第一个参数:正则表达式
第二个参数:要替换成的字符串
第三个参数:目标字符串
第四个参数(可选):默认是-1,就是替换所以符合特征的部分
第五个参数(可选):可以放一个变量在里面,将会被填充为完成的替换次数
七、时间和日期
1、设置时区
deta_default_timezone_set('Asia/Shanghai');
2、获取当前Unix时间戳
time();//返回自从Unix纪元(格林威治时间1970年1月1日00:00:00到当前时间的秒数
3、获得指定时间点的时间戳
mktime($hour,$minute,$second,$month,$day,$year);
4、从Unix时间戳取得时间日期信息
date()//格式化一个本地时间/日期
第一个参数(必填):写上你需要的时间日期格式
data('Y-m-d G:i:s')
5、获取Unix时间和微妙数
microtime()//返回当前Unix时间戳和微妙数
八、图像处理
1、创建图像
1)新建一个图像
imagecreatetruecolor($width,$height)//新建一个真彩色图像
width:图像的宽
height:图像的高
2)打开服务器或网络文件中已经存在的GIF,PNG,JPEG,WBMP
imahecreatefromjpeg();
imahecreatefrompng();
imahecreatefromgif();
imahecreatefromwbmp();
创建或打开失败时会返回空字符串,并且输出一条错误信息
imahesx()//输出画布宽度
imahesy()//输出画布高度
getimagesize()//取得图像大小
2、绘制图像
绘图函数:
1)imagecolorallocate($img,$red,$green,$blue)//分配颜色
2)imagefill()//区域填充
3)imagesetpixel()//画一个单一像素
4)imageline()//画一条线段
5)imagerectangle()//画一个矩形
6)imagestring()//水平低画一行字符串
7)imagettftext()//用TrueType文字所占区域
8)imagettfbbox()//计算TrueType文字所占区域
9)imagecopy()//拷贝图像的一部分
10)imagecopymere()//拷贝并合并图像的一部分
11)imagecopyresampled()//从采样拷贝部分图像并调整大小
3、生成图像
header('Content-type:image/jpeg')
;(在此函数之前不能输出任何内容,该函数放在开头,告诉浏览器以image/jpeg的方式来读)
imagegif()
imagejpeg($img,'图像要保存的名字')(还可以写要保存的路径)
imagepng()
imagewbmp()
4.释放资源
imagedestroy($img)
九、文件与目录操作
1、判断文件和目录
1)is_file()//判断给等文件名是否为一个正常文件
2)is_dir()//判断给定文件名是否是一个目录
2、文件属性
1)file_exists()//检查文件或目录是否存在
2)filesize()//取得普通文件大小
3)is_readable()//判断给定文件名是否可读
4)is_writable()//判断给定文件名是否可写
5)filectime()//获取文件的创建时间
6)filemtime()//获取文件的修改时间
7)fileatime()//取得文件的上次访问时间
8)stat()//获取文件大部分属性值
3、目录的基本操作
1)basename()//返回路径中的文件名部分
2)dirname()//返回路径中的目录部分
3)pathinfo()//返回文件路径的信息
4)opendir()//打开目录句柄
5)readdir()//从目录句柄中读取条目,返回目录中下一个文件的文件名
6)rewinddir()//倒回目录句柄
7)closedir()//关闭目录句柄
8)mkdir()//新建目录
9)rmdir()//删除指定的空目录
10)scandir()//列出指定路径中的文件和目录
4、文件的基本操作
1)fopen()//打开文件或URL
2)fread()//读取文件
3)fgets()//从文件指针中读取一行
4)feof()//测试文件指针是否到了文件结束位置
5)fwrite()//写入文件
6)rewind()//倒回文件指针的位置
7)flock()//轻便的咨询文件锁定
8)ftruncate()//将文件截断到给定的长度
9)fclose()//关闭一个已打开的文件指针
10)file()//把整个文件读入一个数组中
11)copy()//拷贝文件
12)unlink()//删除文件
13)file_get_contents()//将整个文件读入一个字符串
14)file_put_contents()//将字符串写入文件中
15)rename()//重命名一个文件或目录
16)readfile()//读入一个文件并写入到输出缓冲
五、文件上传
1、与上传有关的php配置选项(php.ini)
file_uploads
(默认为on):确定服务器上的PHP脚本是否可以接受HTTP文件上传
memory_limit
:设置脚本可以分批的最大内存量(防止失控的脚本独占服务器内存)
upload_max_filesize
:限制上传文件的最大值,此值必须小于post_max_size的值
post_max_size
:限制通过POST方法可以接受的最大信息量
upload_tmp_dir
(默认为NULL):上传文件存放的临时路径
2、$_FILES多维数组,用于存储各种与上传有关的信息
$_FILES['file']['name'] 文件的原名称,拓展名
$_FILES['file']['size'] 上传文件的大小
$_FILES['file']['tmp_name'] 文件上传后的临时名称
$_FILES['file']['error'] 文件上传时产生的错误
0:没有错误
1:上传文件的大小超出了upload_max_filesize的值
2:上传文件的大小超出了html表单中MAX_FILE_SIZE的值
3:文件只被部分上传
4:没有上传文件
$_FILES['file']['type']//获取上传文件的MIME类型
3、有关php文件上传处理的函数
1)is_upload_file()
判断文件是否是通过POST上传的
2)move_upload_file()
文件上传后,可以使用该函数将文件移动到指定位置
4、文件上传
文件的上传是通过html标签中的from标签来实现的
<?php
header('Content-type:text/html;charset=utf-8');
var_dump($_FILES);
?>
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" />
<input type="submit" name="submit" value="文件上传" />
</form>
</body>
</html>
六、文件下载
<?php
$file='';//里面填下载的文件的名称
$fileinfo=finfo_open(FILEINFO_MIME_TYPE);
$mineType=finfo_file($fileinfo, $file);
finfo_close($fileinfo);
header('Content-type:'.$mineType);//发生指定的文件MIME类型的头信息
header('Content-Disposition:attachement;filename='.basename($file));//指定下载文件的描述
header('Content-Length:'.filesize($file));//指定文件的大小
readfile($file);//读取文件内容至输出缓冲区,返回这个文件
?>