PHP学习笔记(3)

一、正则表达式

正则表达式是由普通字符和特殊字符组成的字符串,描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作!

例如: / a / 就是一个正则表达式

二、定界符

一般习惯使用正斜线/作为定界符

1
2
3
4
5
除了字母、数字、和反斜线以外的字符都可以作为定界符,如:
#
!
{}
|

定界符要放在表达式的起始位置,前后一致

三、普通字符

如:a-z、A-Z、单引号,双引号

四、元字符

元字符是指正则表达式中有特殊含义的字符

常见的一些元字符:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
\d 	匹配任意一个十进制数字,等价于0-9

\D 匹配任意一个除十进制数字以外的字符

\s 匹配任意一个空白字符,如:换页符、换行符、回车符、制表符、垂直制表符

\S 匹配除空白字符以外的任意一个字符

\w 匹配任意一个数字或字母或下划线

\W 匹配除数字或字母或下划线的任意一个字符

. 匹配除换行符以外的任意一个字符

* 匹配0次、或1次、或多次其前面的字符
*
+ 匹配1次或多次其前面的字符
+
? 匹配0次或1次其前面的字符

{n} 表示其前面的字符恰好出现n次

{n,} 表示其前面的字符出现的次数不少于n次

{n,m} 表示其前面的字符至少出现n次,最多出现m次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.*配合使用,默认情况下是贪婪匹配(尽可能多的去匹配字符)

.*后面加一个 ? 可以解决贪婪匹配的问题,懒惰匹配

^ 或 \A 匹配字符串开始位置(该符号应放在开头)(目标字符串在开头时才能匹配到)

$ 或 \Z 匹配字符串结束位置(该符号应放在末尾)(目标字符串在末尾时才能匹配到)

^和$配合使用 只能匹配到^和$中间的字符串

| (或),可以匹配到|连接的任意一个字符串

[] 可以匹配括号中任意的一个字符

[^] 可以匹配除括号中的字符以外的任意一个字符

() 把括号中的内容作为一个整体以便获取

在末尾加\\数字,\\数字代表第几个括号里的内容

五、模式修正符

模式修正符是放在正则表达式的定界符之后的,用于增强正则表达式的处理能力,可多个搭配使用。

常见模式修正符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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、设置时区

1
deta_default_timezone_set('Asia/Shanghai');

2、获取当前Unix时间戳

1
time();//返回自从Unix纪元(格林威治时间1970年1月1日00:00:00到当前时间的秒数

3、获得指定时间点的时间戳

1
mktime($hour,$minute,$second,$month,$day,$year);

4、从Unix时间戳取得时间日期信息

1
date()//格式化一个本地时间/日期

第一个参数(必填):写上你需要的时间日期格式

1
data('Y-m-d G:i:s')

5、获取Unix时间和微妙数

1
microtime()//返回当前Unix时间戳和微妙数

八、图像处理

1、创建图像

1)新建一个图像

1
2
3
4
5
imagecreatetruecolor($width,$height)//新建一个真彩色图像

width:图像的宽

height:图像的高

2)打开服务器或网络文件中已经存在的GIF,PNG,JPEG,WBMP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
imahecreatefromjpeg();

imahecreatefrompng();

imahecreatefromgif();

imahecreatefromwbmp();
创建或打开失败时会返回空字符串,并且输出一条错误信息

imahesx()//输出画布宽度

imahesy()//输出画布高度

getimagesize()//取得图像大小

2、绘制图像

绘图函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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的方式来读)

1
2
3
4
5
6
7
imagegif()

imagejpeg($img,'图像要保存的名字')(还可以写要保存的路径)

imagepng()

imagewbmp()

4.释放资源

1
imagedestroy($img)

九、文件与目录操作

1、判断文件和目录

1
2
3
1)is_file()//判断给等文件名是否为一个正常文件

2)is_dir()//判断给定文件名是否是一个目录

2、文件属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1)file_exists()//检查文件或目录是否存在

2)filesize()//取得普通文件大小

3)is_readable()//判断给定文件名是否可读

4)is_writable()//判断给定文件名是否可写

5)filectime()//获取文件的创建时间

6)filemtime()//获取文件的修改时间

7)fileatime()//取得文件的上次访问时间

8)stat()//获取文件大部分属性值

3、目录的基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1)basename()//返回路径中的文件名部分

2)dirname()//返回路径中的目录部分

3)pathinfo()//返回文件路径的信息

4)opendir()//打开目录句柄

5)readdir()//从目录句柄中读取条目,返回目录中下一个文件的文件名

6)rewinddir()//倒回目录句柄

7)closedir()//关闭目录句柄

8)mkdir()//新建目录

9)rmdir()//删除指定的空目录

10)scandir()//列出指定路径中的文件和目录

4、文件的基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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多维数组,用于存储各种与上传有关的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
$_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标签来实现的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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>

六、文件下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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);//读取文件内容至输出缓冲区,返回这个文件
?>
文章目录
  1. 1. 一、正则表达式
  2. 2. 二、定界符
  3. 3. 三、普通字符
  4. 4. 四、元字符
  5. 5. 五、模式修正符
    1. 5.1. 常见模式修正符
  6. 6. 六、与正则表达式配合的函数
  7. 7. 七、时间和日期
  8. 8. 八、图像处理
    1. 8.1. 1、创建图像
      1. 8.1.1. 1)新建一个图像
      2. 8.1.2. 2)打开服务器或网络文件中已经存在的GIF,PNG,JPEG,WBMP
    2. 8.2. 2、绘制图像
    3. 8.3. 3、生成图像
    4. 8.4. 4.释放资源
  9. 9. 九、文件与目录操作
    1. 9.1. 1、判断文件和目录
    2. 9.2. 2、文件属性
    3. 9.3. 3、目录的基本操作
    4. 9.4. 4、文件的基本操作
    5. 9.5. 五、文件上传
    6. 9.6. 1、与上传有关的php配置选项(php.ini)
    7. 9.7. 2、$_FILES多维数组,用于存储各种与上传有关的信息
    8. 9.8. 3、有关php文件上传处理的函数
    9. 9.9. 4、文件上传
  10. 10. 六、文件下载
|