-
Notifications
You must be signed in to change notification settings - Fork 0
/
PHP常用函数总结.txt
executable file
·292 lines (271 loc) · 21 KB
/
PHP常用函数总结.txt
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
函数:
func_get_args() 接收一个数组,包含所有参数;
func_num_args() 返回传递到当前函数的参数个数;
func_get_arg(整数) 取得指定位置的参数,序号从0开始。
日期时间:
date() 获取时间,只传参"U"可以获得当前unix时间戳,传参"D/l"获得当前是星期几(简写/全称)
time() 获得当前时间的unix时间戳
mktime() 不传参时获得当前时间unix时间戳,传参则产生指定时间的时间戳,参数顺序:时分秒月日年
strtotime() 获取指定时间的unix时间戳,如now、+/-x days/weeks/months/years等
strftime() 从时间中获取格式化字符串
gmmktime() 用法与mktime()相同,只是获取的是零时区的时间戳
gmdate() 用法与date()相同,只不过是获得零时区的时间
getdate() 获取含各种时间信息的时间数组
checkdate() 传入三个参数月日年,检查时间是否合法。例如2月29日等
microtime() 获取准确时间,比time()多了微秒。返回字符串("微秒 秒")。如果传参true,则直接显示合并后的精确到微秒的时间
gettimeofday() 获取含unix时间戳和微秒数的数组
date_default_timezone_get()、date_default_timezone_set() 获取、修改默认时区
数学:
ceil() 向上取最小的整数
floor() 向下取最大整数
round() 四舍五入取整
mt_rand() 产生指定范围的随机数
abs() 取绝对值
进制转换:
hexdec() 将十六进制转换为十进制
dechex() 将十进制转换为十六进制
bin2hex() 将二进制转化为十六进制
hex2bin() 转换十六进制字符串为二进制字符串
octdec() 八进制转换为十进制
decoct() 十进制转换为八进制
decbin() 十进制转换为二进制
bindec() 二进制转换为十进制
文件处理:
include()、require()和include_once()、require_once() 引入文件
basename() 获取指定文件的文件名,第二个参数指定返回值中要去掉的字符串(后缀)
dirname() 获取指定的文件所在目录
filesize() 读取指定文件的字节大小
filectime() 取得文件的inode(节点)修改时间
unlink() 删除文件
rename() 重命名文件或目录
file_exists() 检测文件(夹)是否有存在
fopen()、fread()、fgetc()、fgets()、fwrite()、fclose() 打开、读取、读取一个字符、读取一行、写入、关闭文件
rewind() 重置文件操作指针
file_get_contents()、file_put_contents() 一次性读取文件、写入内容,不存在则创建。可以操作远程文件
is_uploaded_file() 判断是否为上传的文件。防止对其他文件进行处理
move_uploaded_file() 将上传的文件移动到指定位置
目录处理:
scandir() 扫描指定目录并以数组形式返回结果
opendir() 打开目录。含有“.”和“..”
readdir() 读取由opendir()打开的文件对象,一次读取一个
rewinddir() 重置目录指针
dir() 打开指定目录,并返回对象。这个对象包含三个方法:read() , rewind() 以及 close()。含有".."
mkdir() 新建一个文件夹,可以指定权限(如0777),可选第三个参数指定是否递归 创建
rename() 重命名文件或目录。可以用来移动文件,速度比copy()+unlink()快得多。
rmdir() 删除目录。只能删除空目录
glob() 返回匹配指定模式的文件名或目录路径。不包括“.”和“..”
getcwd() 获得当前操作目录
chdir() 更改当前操作目录
disk_total_space() 获取指定目录的总磁盘空间
disk_free_space() 获取指定目录的可用磁盘空间,别名diskfreespace()
图像处理:
getimagesize() 获取图像的宽高、类型、位数、通道、mime类型等
imagecreatefromxxx() 从图像建立资源类型。xxx可以是png、jpeg、gif、wbmp等。不能混用,要打开一个图像必须使用相应的函数
imagecreatefromstring() 从文本(字符串)创建图像资源
imagesx() 获取图像资源的宽度
imagesy() 获取图像资源的高度
image_type_to_extension() 将图像类型序号转换为具体的字母形式。如1->.gif、2->.jpeg、3->.png
image_type_to_mime_type() 将图像类型序号转换为mime类型。如1->image/gif
imagecreate() 创建基于调色板的图像资源。可以指定高度和宽度。默认颜色为黑色。色彩为256色
imagecolorstotal() 获取指定的图像资源有多少种颜色。初始画布颜色数为0,输出时默认以黑色输出
imagecolorallocate() 为一幅图像分配颜色。参数:资源,红,绿,蓝 其中颜色为数值0~255
imagecolorallocatealpha() 比imagecolorallocate()多一个透明参数,范围0~127。127为全透明
imagegif() 显示gif图像
imagejpeg() 显示jpeg图像
imagedestory() 释放图像资源
注:不能写成jpg,必须写成jpeg
imagefill() 为真彩色图像填充颜色。第二三个参数为填充坐标,与该坐标颜色相同且相邻的点才会被填充。真彩色图像在分配颜色后必须填充才能被应用
imagefilltoborder() 区域填充到指定颜色的边界为止
imagecolorat() 对于真彩色图像,获取图像指定位置的RGB颜色。对于基于调色板的图像,获取指定位置的索引
imagecopy() 将一张图放到另一张图上
imagesettile() 使用贴图来填充一块区域
imageline() 用指定颜色在两点之间画一条线段
imagedashedline() 用指定颜色画一条虚线。用法与imageline()相同
imagesetstyle() 自定义划线风格。风格以数组形式定义
imagesetthickness() 定义划线的粗细
imagesetbrush() 设置图像的笔刷。可以将图像资源作为笔刷
点、线、矩形、多边形、椭圆、圆弧绘制:
imagesetpixel() 绘制像素点
imageline() 绘制一条线
imagerectangle() 绘制矩形
imagefilledrectangle() 在图像上绘制填充的矩形
imagecolorsforindex() 取得某索引的RGBA颜色。返回含red、green、blue、alpha的数组。alpha为127时全透明
imageellipse() 绘制一个椭圆。如果指定的宽高相等则绘制一个圆
imagefilledellipse() 绘制一个填充的椭圆
imagearc() 画一个椭圆弧。w和 h 分别指定了椭圆的宽度和高度,起始和结束点参数以角度指定。以顺时针方向绘画
imagefilledarc() 画一椭圆弧且填充
imagepolygon() 画一个多边形。具体参数见手册
imagefilledpolygon() 绘制一个填充的多边形
相关设置:
imagesetbrush() 设置画线用的笔刷
imagesetthickness() 设置画线的粗细
imagesetstyle() 设定画线的风格
imagesettile() 设定用于填充的贴图
图像叠加、旋转:
imagerotate() 将图像旋转指定的角度。可以用指定的颜色填充旋转后的空白区域
传递第四个非零参数,将忽略掉原图像的透明色。返回旋转后的图像资源
imagecolortransparent() 传递一个参数时获取图像透明色的索引。如果没有透明色,返回-1
传递第二个颜色参数,将透明色改变为指定的颜色
imagecolorset() 给指定调色板索引设定颜色。和上一个函数配合使用,可将透明色改变为背景色
imagecolorsforindex() 获得指定索引的rgba颜色。以关联数组(red、green、blue、alpha)形式返回
imagecopy() 将一个图像复制到另一张图像上,可以指定图像的位置、宽度
imagecopymerge() 拷贝图像并合并。与imagecopy()用法一样,只不过增加了一个参数,可以指定透明度(融合度)
注:此函数不支持透明图像的拷贝,例如把一个部分透明的png水印拷贝到新图像上,那么水印
原本的透明信息会丢失,整个会变成不透明,此时传递的最后一个透明度参数的作用是指定
这个已经变得不透明的水印的整体透明度
建议使用imagecopyresampled(),因为它支持透明图像的拷贝
imagecopymergegray() 用法与上一个函数一样,只不过将目标图转换为灰度图像(原图色彩不变)
imagecopyresampled() 拷贝图像并可以指定拷贝尺寸和大小,也可调整高宽比。此函数适合用来制作缩略图
imagecopyresized() 用法完全同上。区别在于此函数在缩放后不会重新取样,因此可能会造成颜色信息的丢失
建议尽量使用imagecopyresampled()
色彩判断、转换:
imagecolorstotal() 获取一幅图像中调色板颜色的总数
imageistruecolor() 判读图像是否为真彩色图像
imagetruecolortopalette() 将真彩色图像转换为调色板图像。第二个参数指定是否平滑过渡,第三个参数指定转化后的颜色数
imagecolorat() 获得指定位置的颜色索引值;
对于真彩色图像,可以再使用此函数之后再使用imagecolorsforindex()将其转化为包含rgba的数组
也可以通过移位加掩码取得各颜色的值
imagecolorset() 将某一指定索引色修改为新的颜色。可以和imagecolorat()结合使用
绘制文字相关函数:
imagechar() 水平地绘制一个字符。由于字体的问题,默认只能绘制英文。如果传参字符串,只绘制第一个字符。参数见手册。
imagecharup() 垂直地绘制一个字符。用法同上。
imagestring() 水平地绘制一个字符串。
imagestringup() 垂直地绘制一个字符串。
imagefontwidth() 获取指定大小字体的单个字符宽度。
imagefontheight() 获取指定大小字体的单个字符高度。
imagettftext() 绘制指定字体样式的文字。可以旋转角度。
imagettfbbox() 计算包围着 TrueType 文本范围的虚拟方框的像素大小。
返回包含文本四个角坐标的数组。可以利用两组对角坐标计算字串的宽度和高度。
顺序依次为:0~1左下 2~3右下 4~5右上 6~7左上
字符串基本处理:
去除字符 trim($str,$char)、ltrim、rtrim
截取 substr()、strstr()[别名strchr(),前后都可以截取,派生stristr、strrchr]
位置查找 strpos()[派生stripos、strrpos、strripos]
大小写转换 strtolower()、strtoupper()、ucfirst()、ucwords()
顺序翻转 strrev()
比较 strcmp($str1,$str2)[派生strcasecmp()]、strnatcmp()、strncmp()、similar_text()
统计 substr_count($str1,$str2[,$startpos,$count_len])
字符串填充 str_pad($str, 长度, "填充内容", 填充的方向)
字符串拆分
strtok()[返回可遍历的字符串变量,一次返回一段拆分后的字符串,注意0==false]
chuck_split()[按指定大小拆分成新字符串,可以指定连接符]
字符串替换
str_replace($old,$new,$str)[也可以使用元素一一对应的一维数组一次进行多个替换]
strtr($str[,$old,$new]|[,$arr]) 可以通过字符串对应地替换,也可以通过一维索引数组进行一一替换
md5加密 md5()
金额字符串格式化 number_format()
字符串特殊转化处理:
字符串拆分成数组 explode(依据,$str)
数组组合成字符串 implode([连接字符串,]数组) <=> join()
字符串与unix时间戳转化 strtotime()、strftime()
拆分、赋值成变量 parse_str()
URL解析成数组 parse_url($url)
URL编码和解码 urlencode()[将字符串以URL编码]、urldecode()[将URL解析成字符串]
实体化转换 htmlentities()[对包括中文的字符串实体化,如'<'=>'<','>'=>'>']
非中文实体化转换 htmlspecialchars()[同htmlentities(),只不过只处理非中文字符]
非中文去实体化 htmlspecialchars_decode()
自动转义 addslashes()[常通过get_magic_quotes_gpc()判断是否配置自动转义之后再处理]
去除转义 stripslashes()
获取php.ini的配置 ini_get()、ini_get_all()[数组形式]、get_magic_quotes_gpc()、get_magic_quotes_runtime()[获得外部文件和数据库资料时是否进行转义]
配置php.ini ini_set()、set_magic_quotes_runtime(1)[开启自动转义,0为关闭]
去除字符串中的html标签 strip_tags(字符串[, '<tag>'])[第二个参数为要保留的标签]
iconv() 转换字符编码
数组:
数组指针相关
reset() 初始化数组指针并返回第一个元素值
end() 移动数组指针到末尾并返回最后一个元素值
prev() 数组的内部指针倒回一位并返回调整后指向的元素值,到头则返回false
next() 数组中的内部指针向前移动一位并返回调整后指向的元素值,到尾则返回false
current() 返回当前指针指向的数组元素,为空返回false
key() 返回当前指针所指向元素的键名
键、值(对)操作
array_change_key_case() 更改键名的大小写
array_search() 搜索数组元素并返回第一个对应的键名
array_rand() 从数组中随机取出指定数量的元素,返回该元素对应的索引(集)
array_flip() 把数组中的键名与键值互相交换,重复则后者覆盖前者
array_reverse() 将数组元素反转并返回。如果增加第二个参数true,则数组键值对一起反转,顺序相反,索引不变
array_key_exits() 判断是否是数组的键名
array_keys() 返回数组中所有的键名,可以返回指定值的键名
array_values() 以数组形式返回数组所有的元素值
array_unshift() 向数组开头插入元素。直接对原数组操作,返回插入后的数组长度。失败则返回false或null。(可用is_null()函数判断)
array_shift() 删除数组中的第一个元素,并返回被删除元素的值
array_pop() 删除数组最后一个元素,操作原数组,返回操作后的数组长度
array_push() 向数组末尾追加元素(入栈)。操作原数组,返回操作后的数组长度
unset() 删除一个变量或元素,可用于删除数组元素
拆分、合并、生成(转化为其他变量)
array_chunk() 将数组进行拆分,可以指定继承键名
array_slice() 从数组中取出一段并以数组形式返回
array_combine() 通过两个数组(可以是关联数组)生成新数组,一个作为键名,一个作为键值
array_merge() 把一个或多个数组合并为一个数组。重名则前面的被覆盖。
array_merge_recursive() 作用同上,在有重复项时,覆盖,合并生成二维数组。
compact() 将多个变量转化为数组。可直接接受变量名字符串,也可接受包含变量名字符串的数组
extract() 将数组生成变量。返回生成的变量数。默认若生成的变量已存在,则进行覆盖。可增加参数改变
each() 拆分数组,每使用一次,返回一个(索引数组中是一对)元素,可与list()结合使用
list() 把数组元素对应赋值给多个变量,只对索引数组生效。常与each()一起使用
比较
array_diff() 比较与其他数组的键值差异,返回公共交集(差集)
array_diff_key() 用法同上,不过只比较键名,返回交集(差集),派生:array_diff_ukey()
array_diff_assoc() 用法同array_diff(),但键名与键值同时比较,返回差集,派生:array_diff_uassoc()
对应的反函数array_intersect()、array_intersect_key()、array_intersect_assoc()
反函数的派生:array_intersect_ukey()、array_intersect_uassoc()
填充与过滤
array_unique() 移除数组中的重复项
array_fill() 在指定位置用指定个数的值填充数组
array_fill_keys() 使用指定的键和值填充数组,键由一维数组指定
array_pad() 用值将数组填补到指定长度。类似于str_pad()。第二个参数可以是负数,表示从开头填充
array_filter() 通过回调函数过滤数组并返回新数组,如果回调函数返回TRUE,数组元素返回到新数组中
遍历、统计
count() 统计数组元素个数
in_array() 判断元素是否在一维数组中
array_map() 第一个参数为回调函数,第二个为数组。将数组中的每个元素用回调函数处理。可以传递多个数组。处理过的元素返回生成新数组
array_walk() 第二个参数为回调函数,可传递多个自定义参数。对数组中的每个成员应用回调函数,成功返回真失败返回假。回调函数传参是键值-键名的形式
array_walk_recursive() 功能与array_walk()相同,只不过通过递归的方式对数组进行遍历,因此可以操作二维数组
each()和list()也可用于遍历数组
range() 生成包含指定范围的数组,可以指定步长。与python中的range()一样
array_count_values() 统计数组中所有值出现的次数。统计结果以数组形式返回
array_product() 将数组中的键值相乘,返回数值(int或float)。当然使用循环也可以
array_sum() 计算数组中所有值的和。返回计算后的值
array_reduce() 用回调函数迭代地对数组元素进行处理为单一的值,返回处理后的值
排序
sort() 对数组进行排序。可指定第二个参数使其按指定规则排序。不保留索引顺序。操作原数组
usort() 通过回调函数对数组进行排序。操作原数组
asort() 对数组进行排序并保持索引关系
uasort() 通过回调函数对数组进行排序并保持索引关系
arsort() 对数组进行逆向排序并保持索引关系
ksort() 对数组按照键名排序
uksort() 通过回调函数对数组按照键名排序
rsort() 对数组逆向排序。不保留索引顺序。操作原数组
krsort() 对数组按照键名逆向排序
natsort() 用自然排序算法进行排序。保留索引顺序
natcasesort() 用自然排序算法进行不区分大小写的排序。保留索引顺序
shuffle() 按随机顺序排序。不保留键名
array_multisort() 对多个数组或多维数组进行排序。可添加参数以指定排序顺序
类型判断:
is_array()
is_string()
is_bool()
is_object()、is_a()[检测对象是否属于类]、is_subclass_of()、is_resource()
is_double()、is_float()[别名is_real()]、is_long()、is_int()[别名is_integar()]、is_numeric()[是否是数字]
is_null()、is_infinite[检测是否为无限值,对应的is_finite检测有限值]、is_scalar()[检测是否是标量]
is_dir()、is_file()、is_uploaded_file() 文件和目录检测
is_readable()、is_writable()[别名is_writeable()]、is_executable()
正则表达式操作函数:
preg_match() 查找字符串,找到返回1,否则返回0。
传递第三个参数,将结果放到数组中(匹配结果和出现的位置)。
传递第四个参数,可以获得偏移量。
第五个参数指定开始查找的位置。
preg_match_all() 匹配并将结果放到指定的数组中。参数同上。
preg_grep() 使用正则表达式匹配数组元素,以数组形式返回匹配结果,保留索引。可使用array_values()清除原索引。
如果添加第三个参数PREG_GREP_INVERT,则返回与正则不匹配的元素(反转)。
preg_split() 通过一个正则表达式分隔字符串。以数组形式返回结果。第三个参数指定分割子串数,-1、0或null都表示
不限制。指定第四个参数PREG_SPLIT_NO_EMPTY, 返回分割后的非空部分。
指定参数PREG_SPLIT_OFFSET_CAPTURE,返回偏移量(即匹配位置)。
* 可以同时使用多个参数,使用+连接即可。如:PREG_SPLIT_NO_EMPTY+PREG_SPLIT_OFFSET_CAPTURE。
preg_replace() 使用正则匹配并替换。作用于字符串。如果传入含多个正则表达式的数组,同时传入要替换为的数组,
则一个正则表达式对应一条替换内容。传递第四个参数指定替换次数,-1代表全部替换。第五个参数
用于统计实际替换数量。
preg_replace_callback() 与preg_replace()相似,但是可以自定义回调函数,使用回调函数处理后再替换(第二个参数)。
其他参数一样。
create_function() 创建一个匿名函数,两个字符串参数。第一个为匿名函数的参数,第二个为函数体代码。注意转义。
preg_filter() 执行一个正则表达式搜索和替换。与preg_replace()基本相同,参数一样,唯一不同的是它只返回与目标
匹配的结果,而preg_replace()返回所有的内容(无论是否匹配)。