- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章非常实用的PHP常用函数汇总由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例总结了一些在php应用开发中常用到的函数,这些函数有字符操作,文件操作及其它的一些操作了,分享给大家供大家参考。具体如下:
1、PHP加密解密 。
PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密.
使用方法如下:
2、PHP生成随机字符串 。
。
当我们需要生成一个随机名字,临时密码等字符串时可以用到下面的函数:
使用方法如下:
3、PHP获取文件扩展名(后缀) 。
。
以下函数可以快速获取文件的扩展名即后缀.
使用方法如下:
4、PHP获取文件大小并格式化 。
。
以下使用的函数可以获取文件的大小,并且转换成便于阅读的KB,MB等格式.
使用方法如下:
5、PHP替换标签字符 。
。
有时我们需要将字符串、模板标签替换成指定的内容,可以用到下面的函数:
使用方法如下:
6、PHP列出目录下的文件名 。
。
如果你想列出目录下的所有文件,使用以下代码即可:
使用方法如下:
7、PHP获取当前页面URL 。
。
以下函数可以获取当前页面的URL,不管是http还是https.
使用方法如下:
8、PHP强制下载文件 。
。
有时我们不想让浏览器直接打开文件,如PDF文件,而是要直接下载文件,那么以下函数可以强制下载文件,函数中使用了application/octet-stream头类型.
使用方法如下:
9、PHP截取字符串长度 。
。
我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用...表示,以下函数可以满足你的需求.
使用方法如下:
10、PHP获取客户端真实IP 。
。
我们经常要用数据库记录用户的IP,以下代码可以获取客户端真实的IP:
使用方法如下:
11、PHP防止SQL注入 。
。
我们在查询数据库时,出于安全考虑,需要过滤一些非法字符防止SQL恶意注入,请看一下函数:
使用方法如下:
12、PHP页面提示与跳转 。
。
我们在进行表单操作时,有时为了友好需要提示用户操作结果,并跳转到相关页面,请看以下函数:
使用方法如下:
13、PHP计算时长 。
。
我们在处理时间时,需要计算当前时间距离某个时间点的时长,如计算客户端运行时长,通常用hh:mm:ss表示.
使用方法如下:
。
希望本文所述对大家的PHP程序设计有所帮助.
下面特为大家加点料希望大家能喜欢:
本文汇总了常用的PHP函数,包括获取客户端IP,字符串截取,下载等,详情请查看如下代码:
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
|
<?php
/**
* 获取客户端IP
* @return [string] [description]
*/
function
getClientIp() {
$ip
= NULL;
if
(isset(
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
])) {
$arr
=
explode
(
','
,
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
]);
$pos
=
array_search
(
'unknown'
,
$arr
);
if
(false !==
$pos
) unset(
$arr
[
$pos
]);
$ip
= trim(
$arr
[0]);
}
elseif
(isset(
$_SERVER
[
'HTTP_CLIENT_IP'
])) {
$ip
=
$_SERVER
[
'HTTP_CLIENT_IP'
];
}
elseif
(isset(
$_SERVER
[
'REMOTE_ADDR'
])) {
$ip
=
$_SERVER
[
'REMOTE_ADDR'
];
}
// IP地址合法验证
$ip
= (false !==
ip2long
(
$ip
)) ?
$ip
:
'0.0.0.0'
;
return
$ip
;
}
/**
* 获取在线IP
* @return String
*/
function
getOnlineIp(
$format
=0) {
global
$S_GLOBAL
;
if
(
empty
(
$S_GLOBAL
[
'onlineip'
])) {
if
(
getenv
(
'HTTP_CLIENT_IP'
) &&
strcasecmp
(
getenv
(
'HTTP_CLIENT_IP'
),
'unknown'
)) {
$onlineip
=
getenv
(
'HTTP_CLIENT_IP'
);
}
elseif
(
getenv
(
'HTTP_X_FORWARDED_FOR'
) &&
strcasecmp
(
getenv
(
'HTTP_X_FORWARDED_FOR'
),
'unknown'
)) {
$onlineip
=
getenv
(
'HTTP_X_FORWARDED_FOR'
);
}
elseif
(
getenv
(
'REMOTE_ADDR'
) &&
strcasecmp
(
getenv
(
'REMOTE_ADDR'
),
'unknown'
)) {
$onlineip
=
getenv
(
'REMOTE_ADDR'
);
}
elseif
(isset(
$_SERVER
[
'REMOTE_ADDR'
]) &&
$_SERVER
[
'REMOTE_ADDR'
] &&
strcasecmp
(
$_SERVER
[
'REMOTE_ADDR'
],
'unknown'
)) {
$onlineip
=
$_SERVER
[
'REMOTE_ADDR'
];
}
preg_match(
"/[\d\.]{7,15}/"
,
$onlineip
,
$onlineipmatches
);
$S_GLOBAL
[
'onlineip'
] =
$onlineipmatches
[0] ?
$onlineipmatches
[0] :
'unknown'
;
}
if
(
$format
) {
$ips
=
explode
(
'.'
,
$S_GLOBAL
[
'onlineip'
]);
for
(
$i
=0;
$i
<3;
$i
++) {
$ips
[
$i
] =
intval
(
$ips
[
$i
]);
}
return
sprintf(
'%03d%03d%03d'
,
$ips
[0],
$ips
[1],
$ips
[2]);
}
else
{
return
$S_GLOBAL
[
'onlineip'
];
}
}
/**
* 获取url
* @return [type] [description]
*/
function
getUrl(){
$pageURL
=
'http'
;
if
(isset(
$_SERVER
[
"HTTPS"
]) &&
$_SERVER
[
"HTTPS"
] ==
"on"
) {
$pageURL
.=
"s"
;
}
$pageURL
.=
"://"
;
if
(
$_SERVER
[
"SERVER_PORT"
] !=
"80"
) {
$pageURL
.=
$_SERVER
[
"HTTP_HOST"
] .
":"
.
$_SERVER
[
"SERVER_PORT"
] .
$_SERVER
[
"REQUEST_URI"
];
}
else
{
$pageURL
.=
$_SERVER
[
"HTTP_HOST"
] .
$_SERVER
[
"REQUEST_URI"
];
}
return
$pageURL
;
}
/**
* 获取当前站点的访问路径根目录
* @return [type] [description]
*/
function
getSiteUrl() {
$uri
=
$_SERVER
[
'REQUEST_URI'
]?
$_SERVER
[
'REQUEST_URI'
]:(
$_SERVER
[
'PHP_SELF'
]?
$_SERVER
[
'PHP_SELF'
]:
$_SERVER
[
'SCRIPT_NAME'
]);
return
'http://'
.
$_SERVER
[
'HTTP_HOST'
].
substr
(
$uri
, 0,
strrpos
(
$uri
,
'/'
)+1);
}
/**
* 字符串截取,支持中文和其他编码
* @param [string] $str [字符串]
* @param integer $start [起始位置]
* @param integer $length [截取长度]
* @param string $charset [字符串编码]
* @param boolean $suffix [是否有省略号]
* @return [type] [description]
*/
function
msubstr(
$str
,
$start
=0,
$length
=15,
$charset
=
"utf-8"
,
$suffix
=true) {
if
(function_exists(
"mb_substr"
)) {
return
mb_substr(
$str
,
$start
,
$length
,
$charset
);
}
elseif
(function_exists(
'iconv_substr'
)) {
return
iconv_substr(
$str
,
$start
,
$length
,
$charset
);
}
$re
[
'utf-8'
] =
"/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"
;
$re
[
'gb2312'
] =
"/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"
;
$re
[
'gbk'
] =
"/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"
;
$re
[
'big5'
] =
"/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"
;
preg_match_all(
$re
[
$charset
],
$str
,
$match
);
$slice
= join(
""
,
array_slice
(
$match
[0],
$start
,
$length
));
if
(
$suffix
) {
return
$slice
.
"…"
;
}
return
$slice
;
}
/**
* php 实现js escape 函数
* @param [type] $string [description]
* @param string $encoding [description]
* @return [type] [description]
*/
function
escape(
$string
,
$encoding
=
'UTF-8'
){
$return
= null;
for
(
$x
= 0;
$x
< mb_strlen(
$string
,
$encoding
);
$x
++)
{
$str
= mb_substr(
$string
,
$x
, 1,
$encoding
);
if
(
strlen
(
$str
) > 1) {
// 多字节字符
$return
.=
"%u"
.
strtoupper
(bin2hex(mb_convert_encoding(
$str
,
'UCS-2'
,
$encoding
)));
}
else
{
$return
.=
"%"
.
strtoupper
(bin2hex(
$str
));
}
}
return
$return
;
}
/**
* php 实现 js unescape函数
* @param [type] $str [description]
* @return [type] [description]
*/
function
unescape(
$str
) {
$str
= rawurldecode(
$str
);
preg_match_all(
"/(?:%u.{4})|.{4};|&#\d+;|.+/U"
,
$str
,
$r
);
$ar
=
$r
[0];
foreach
(
$ar
as
$k
=>
$v
) {
if
(
substr
(
$v
,0,2) ==
"%u"
){
$ar
[
$k
] = iconv(
"UCS-2"
,
"utf-8//IGNORE"
,pack(
"H4"
,
substr
(
$v
,-4)));
}
elseif
(
substr
(
$v
,0,3) ==
""
) {
$ar
[
$k
] = iconv(
"UCS-2"
,
"utf-8"
,pack(
"H4"
,
substr
(
$v
,3,-1)));
}
elseif
(
substr
(
$v
,0,2) ==
"&#"
) {
echo
substr
(
$v
,2,-1).
""
;
$ar
[
$k
] = iconv(
"UCS-2"
,
"utf-8"
,pack(
"n"
,
substr
(
$v
,2,-1)));
}
}
return
join(
""
,
$ar
);
}
/**
* 数字转人名币
* @param [type] $num [description]
* @return [type] [description]
*/
function
num2rmb (
$num
) {
$c1
=
"零壹贰叁肆伍陆柒捌玖"
;
$c2
=
"分角元拾佰仟万拾佰仟亿"
;
$num
=
round
(
$num
, 2);
$num
=
$num
* 100;
if
(
strlen
(
$num
) > 10) {
return
"oh,sorry,the number is too long!"
;
}
$i
= 0;
$c
=
""
;
while
(1) {
if
(
$i
== 0) {
$n
=
substr
(
$num
,
strlen
(
$num
)-1, 1);
}
else
{
$n
=
$num
% 10;
}
$p1
=
substr
(
$c1
, 3 *
$n
, 3);
$p2
=
substr
(
$c2
, 3 *
$i
, 3);
if
(
$n
!=
'0'
|| (
$n
==
'0'
&& (
$p2
==
'亿'
||
$p2
==
'万'
||
$p2
==
'元'
))) {
$c
=
$p1
.
$p2
.
$c
;
}
else
{
$c
=
$p1
.
$c
;
}
$i
=
$i
+ 1;
$num
=
$num
/ 10;
$num
= (int)
$num
;
if
(
$num
== 0) {
break
;
}
}
$j
= 0;
$slen
=
strlen
(
$c
);
while
(
$j
<
$slen
) {
$m
=
substr
(
$c
,
$j
, 6);
if
(
$m
==
'零元'
||
$m
==
'零万'
||
$m
==
'零亿'
||
$m
==
'零零'
) {
$left
=
substr
(
$c
, 0,
$j
);
$right
=
substr
(
$c
,
$j
+ 3);
$c
=
$left
.
$right
;
$j
=
$j
-3;
$slen
=
$slen
-3;
}
$j
=
$j
+ 3;
}
if
(
substr
(
$c
,
strlen
(
$c
)-3, 3) ==
'零'
) {
$c
=
substr
(
$c
, 0,
strlen
(
$c
)-3);
}
// if there is a '0' on the end , chop it out
return
$c
.
"整"
;
}
/**
* 特殊的字符
* @param [type] $str [description]
* @return [type] [description]
*/
function
makeSemiangle(
$str
) {
$arr
=
array
(
'0'
=>
'0'
,
'1'
=>
'1'
,
'2'
=>
'2'
,
'3'
=>
'3'
,
'4'
=>
'4'
,
'5'
=>
'5'
,
'6'
=>
'6'
,
'7'
=>
'7'
,
'8'
=>
'8'
,
'9'
=>
'9'
,
'A'
=>
'A'
,
'B'
=>
'B'
,
'C'
=>
'C'
,
'D'
=>
'D'
,
'E'
=>
'E'
,
'F'
=>
'F'
,
'G'
=>
'G'
,
'H'
=>
'H'
,
'I'
=>
'I'
,
'J'
=>
'J'
,
'K'
=>
'K'
,
'L'
=>
'L'
,
'M'
=>
'M'
,
'N'
=>
'N'
,
'O'
=>
'O'
,
'P'
=>
'P'
,
'Q'
=>
'Q'
,
'R'
=>
'R'
,
'S'
=>
'S'
,
'T'
=>
'T'
,
'U'
=>
'U'
,
'V'
=>
'V'
,
'W'
=>
'W'
,
'X'
=>
'X'
,
'Y'
=>
'Y'
,
'Z'
=>
'Z'
,
'a'
=>
'a'
,
'b'
=>
'b'
,
'c'
=>
'c'
,
'd'
=>
'd'
,
'e'
=>
'e'
,
'f'
=>
'f'
,
'g'
=>
'g'
,
'h'
=>
'h'
,
'i'
=>
'i'
,
'j'
=>
'j'
,
'k'
=>
'k'
,
'l'
=>
'l'
,
'm'
=>
'm'
,
'n'
=>
'n'
,
'o'
=>
'o'
,
'p'
=>
'p'
,
'q'
=>
'q'
,
'r'
=>
'r'
,
's'
=>
's'
,
't'
=>
't'
,
'u'
=>
'u'
,
'v'
=>
'v'
,
'w'
=>
'w'
,
'x'
=>
'x'
,
'y'
=>
'y'
,
'z'
=>
'z'
,
'('
=>
'('
,
')'
=>
')'
,
'〔'
=>
'['
,
'〕'
=>
']'
,
'【'
=>
'['
,
'】'
=>
']'
,
'〖'
=>
'['
,
'〗'
=>
']'
,
'{'
=>
'{'
,
'}'
=>
'}'
,
'《'
=>
'<'
,
'》'
=>
'>'
,
'%'
=>
'%'
,
'+'
=>
'+'
,
'—'
=>
'-'
,
'-'
=>
'-'
,
'~'
=>
'-'
,
':'
=>
':'
,
'。'
=>
'.'
,
'、'
=>
','
,
','
=>
'.'
,
'、'
=>
'.'
,
';'
=>
';'
,
'?'
=>
'?'
,
'!'
=>
'!'
,
'…'
=>
'-'
,
'‖'
=>
'|'
,
'”'
=>
'"'
,
'“'
=>
'"'
,
''
' => '
`
', '
‘
' => '
`
', '
|
' => '
|
', '
〃
' => '
"',
' '
=>
' '
,
'.'
=>
'.'
);
return
strtr
(
$str
,
$arr
);
}
/**
* 下载
* @param [type] $filename [description]
* @param string $dir [description]
* @return [type] [description]
*/
function
downloads(
$filename
,
$dir
=
'./'
){
$filepath
=
$dir
.
$filename
;
if
(!
file_exists
(
$filepath
)){
header(
"Content-type: text/html; charset=utf-8"
);
echo
"File not found!"
;
exit
;
}
else
{
$file
=
fopen
(
$filepath
,
"r"
);
Header(
"Content-type: application/octet-stream"
);
Header(
"Accept-Ranges: bytes"
);
Header(
"Accept-Length: "
.
filesize
(
$filepath
));
Header(
"Content-Disposition: attachment; filename="
.
$filename
);
echo
fread
(
$file
,
filesize
(
$filepath
));
fclose(
$file
);
}
}
/**
* 创建一个目录树
* @param [type] $dir [description]
* @param integer $mode [description]
* @return [type] [description]
*/
function
mkdirs(
$dir
,
$mode
= 0777) {
if
(!
is_dir
(
$dir
)) {
mkdirs(dirname(
$dir
),
$mode
);
return
mkdir
(
$dir
,
$mode
);
}
return
true;
}
|
。
最后此篇关于非常实用的PHP常用函数汇总的文章就讲到这里了,如果你想了解更多关于非常实用的PHP常用函数汇总的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
更新:随意给我反对票,因为问题是我将文件命名为 _stylesheet.html.erb 而不是 _stylesheets.html.erb。我以为我检查了拼写,但显然我没有。我很抱歉浪费了大家的时间
我有一个 Inno Script istaller 在其中运行子 setup.exe 。当向主安装程序提供静默安装参数时,我必须向 setup.exe 提供静默安装参数。 Inno脚本运行命令: [R
我正在尝试在大型数据库中搜索长的、近似的子字符串。例如,一个查询可能是一个 1000 个字符的子字符串,它可能与匹配项相差数百个编辑的 Levenshtein 距离。我听说索引 q-gram 可以做到
我正在尝试在我的应用程序中实现一个非常简单的绘图 View 。这只是我的应用程序的一小部分,但它正在变成一个真正的麻烦。这是我到目前为止所拥有的,但它现在显示的只是莫尔斯电码,如点和线。 - (v
我有一个运行非常慢的 sql 查询,我很困惑为什么。查询是: SELECT DISTINCT(c.ID),c.* FROM `content` c LEFT JOIN `content_meta`
我搜索过这个,但我发现的所有结果对我来说都毫无意义,而且似乎太复杂了。我希望使用 json 或 simplejson 模块来获取对象中字符串的值。 string = '{"name": "Alex"}
我想编写一个流量生成器来复制正在运行的计算机对内存进行的原始读写需求。 但是正在运行的计算机在其内存引用中也显示出(非常强的)局部性,并且在 64 位地址空间中,只会引用非常小范围的地址(事实上,我已
我正在尝试做一个 Project Euler问题,但它涉及添加一个非常大的数字的数字。 (100!) 用Java的int和long太小了。 谢谢你的建议 最佳答案 类 BigInteger看起来它可能
我想在游戏中实现一个物理引擎,以便计算物体在受力时的轨迹。该引擎将根据对象的先前状态计算对象的每个状态。当然,这意味着要在两个时间单位之间进行大量计算才能足够精确。 为了正确地做到这一点,我首先想知道
Edit3:通过将数组的初始化限制为仅奇数进行优化。谢谢@Ronnie! Edit2:谢谢大家,看来我也无能为力了。 编辑:我知道 Python 和 Haskell 是用其他语言实现的,并且或多或少地
背景 我有一个我编写的简单媒体客户端/服务器,我想生成一个非显而易见的时间值,我随每个命令从客户端发送到服务器。时间戳将包含相当多的数据(纳秒分辨率,即使由于现代操作系统中定时器采样的限制,它并不真正
一位招聘软件工程师的 friend 希望我为他开发一个应用。 他希望能够根据技能搜索候选人的简历。 正如您想象的那样,可能有数百、可能数千种技能。 在表格中表示候选人的最佳方式是什么?我在想 skil
我的意思是“慢”,回调类型等待远程服务器超时以有效触发(调用 vimeo 提要,解析它,然后在场景中显示 uiviews) 我大多不明白它是如何工作的。我希望在返回响应后立即从回调中填充我的 View
您好,我正在研究使用快速可靠的生产者消费者队列进行线程切换。我正在使用 VC++ 在 Windows 上工作。 我的设计基于 Anthony Williams队列,基本上就是一个带有 boost::c
我只是想知道您使用 resharper 的经验。我们有一个非常重的 dbml 文件,因为我们的数据库有很多表,每次我需要打开该文件时,我都会收到来自 resharper 的大量异常。以前有人遇到过这个
我目前正在使用 jQuery 中的隐藏/显示功能来帮助从选择框中将表格过滤成组。 实际代码运行良好,但速度非常慢,有时需要一两分钟才能执行。 我切换了代码,所以它使用 css({'display':'
我按顺序调用了以下两个方法(按顺序使用适当的类级别字段) public const string ProcessName = "This is" public const string WindowT
我很难理解描述反射包的文档/示例。我是一名命令式编程老手,但也是一名 Haskell 新手。你能引导我完成一个非常简单的介绍吗? 包裹:https://hackage.haskell.org/pack
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我正在尝试编写一段代码来操作一个很长的文档(超过一百万行)。在这个文本文件中,有固定间隔(每 1003 行)和之间的某些时间戳有我需要的数据,它有 1000 行长,还有一个标题和两个空行,但我不需要。
我是一名优秀的程序员,十分优秀!