21个常用的PHP函数代码段

来源:互联网 发布:罗盘视频软件 编辑:程序博客网 时间:2024/06/11 23:18

[1].[代码] [PHP]代码 跳至 [1]

?
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
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
1. PHP可阅读随机字符串
 
此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。
 
/**************
*@length – length of random string (must be a multiple of 2)
**************/
functionreadable_random_string($length= 6){
$conso=array(“b”,”c”,”d”,”f”,”g”,”h”,”j”,”k”,”l”,
“m”,”n”,”p”,”r”,”s”,”t”,”v”,”w”,”x”,”y”,”z”);
$vocal=array(“a”,”e”,”i”,”o”,”u”);
$password=”";
srand ((double)microtime()*1000000);
$max= $length/2;
for($i=1;$i<=$max;$i++)
{
$password.=$conso[rand(0,19)];
$password.=$vocal[rand(0,4)];
}
return$password;
}
 
2. PHP生成一个随机字符串
 
如果不需要可阅读的字符串,使用此函数替代,即可创建一个随机字符串,作为用户的随机密码等。
 
/*************
*@l – length of random string
*/
functiongenerate_rand($l){
$c= “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″;
srand((double)microtime()*1000000);
for($i=0;$i<$l;$i++) {
$rand.=$c[rand()%strlen($c)];
}
return$rand;
}
 
3. PHP编码电子邮件地址
 
使用此代码,可以将任何电子邮件地址编码为 html 字符实体,以防止被垃圾邮件程序收集。
 
functionencode_email($email=’info@domain.com’,$linkText=’Contact Us’, $attrs=’class=”emailencoder”‘ )
{
// remplazar aroba y puntos
$email= str_replace(‘@’, ‘&#64;’, $email);
$email= str_replace(‘.’, ‘&#46;’, $email);
$email= str_split($email, 5);
 
$linkText= str_replace(‘@’, ‘&#64;’, $linkText);
$linkText= str_replace(‘.’, ‘&#46;’, $linkText);
$linkText= str_split($linkText, 5);
 
$part1= ‘$part2= ‘ilto&#58;’;
$part3= ‘” ‘. $attrs.’ >’;
$part4= ‘’;
 
$encoded= ‘’;
 
return$encoded;
}
 
4. PHP验证邮件地址
 
电子邮件验证也许是中最常用的网页表单验证,此代码除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录,使邮件验证功能更加强大。
 
functionis_valid_email($email,$test_mx= false)
{
if(eregi(“^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$”,$email))
if($test_mx)
{
list($username,$domain) = split(“@”, $email);
returngetmxrr($domain,$mxrecords);
}
else
returntrue;
else
returnfalse;
}
 
5. PHP列出目录内容
 
functionlist_files($dir)
{
if(is_dir($dir))
{
if($handle= opendir($dir))
{
while(($file= readdir($handle)) !== false)
{
if($file!= “.” && $file!= “..” && $file!= “Thumbs.db”)
{
echo‘’.$file.’
’.”\n”;
}
}
closedir($handle);
}
}
}
 
6. PHP销毁目录
 
删除一个目录,包括它的内容。
 
/*****
*@dir – Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
functiondestroyDir($dir,$virtual= false)
{
$ds= DIRECTORY_SEPARATOR;
$dir= $virtual? realpath($dir) : $dir;
$dir= substr($dir, -1) == $ds? substr($dir, 0, -1) : $dir;
if(is_dir($dir) && $handle= opendir($dir))
{
while($file= readdir($handle))
{
if($file== ‘.’ || $file== ‘..’)
{
continue;
}
elseif(is_dir($dir.$ds.$file))
{
destroyDir($dir.$ds.$file);
}
else
{
unlink($dir.$ds.$file);
}
}
closedir($handle);
rmdir($dir);
returntrue;
}
else
{
returnfalse;
}
}
 
7. PHP解析 JSON 数据
 
与大多数流行的 Web 服务如 twitter 通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等。
 
$json_string=’{“id”:1,”name”:”foo”,”email”:”foo@foobar.com”,”interest”:["wordpress","php"]} ‘;
$obj=json_decode($json_string);
echo$obj->name;//prints foo
echo$obj->interest[1];//prints php
 
8. PHP解析 XML 数据
 
//xml string
$xml_string=”
 
 
Foo
foo@bar.com
 
 
Foobar
foobar@foo.com
 
”;
 
//load the xml string using simplexml
$xml= simplexml_load_string($xml_string);
 
//loop through the each node of user
foreach($xml->useras$user)
{
//access attribute
echo$user['id'], ‘  ‘;
//subnodes are accessed by -> operator
echo$user->name, ‘  ‘;
echo$user->email, ‘
’;
}
 
9. PHP创建日志缩略名
 
创建用户友好的日志缩略名。
 
functioncreate_slug($string){
$slug=preg_replace(‘/[^A-Za-z0-9-]+/’, ‘-’, $string);
return$slug;
}
 
10. PHP获取客户端真实 IP 地址
 
该函数将获取用户的真实 IP 地址,即便他使用代理服务器。
 
functiongetRealIpAddr()
{
if(!emptyempty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif(!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return$ip;
}
 
11. PHP强制性文件下载
 
为用户提供强制性的文件下载功能。
 
/********************
*@file – path to file
*/
functionforce_download($file)
{
if((isset($file))&&(file_exists($file))) {
header(“Content-length: “.filesize($file));
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=”‘ . $file. ‘”‘);
readfile(“$file”);
}else{
echo“No file selected”;
}
}
 
12. PHP创建标签云
 
functiongetCloud( $data= array(),$minFontSize= 12, $maxFontSize= 30 )
{
$minimumCount= min( array_values($data) );
$maximumCount= max( array_values($data) );
$spread      = $maximumCount$minimumCount;
$cloudHTML   = ”;
$cloudTags   = array();
 
$spread== 0 && $spread= 1;
 
foreach($dataas $tag => $count)
{
$size= $minFontSize+ ( $count$minimumCount)
* ( $maxFontSize$minFontSize) / $spread;
$cloudTags[] = ‘. ‘” href=”#” title=”\” . $tag .
‘\’ returned a countof ‘ . $count. ‘”>’
. htmlspecialchars( stripslashes($tag) ) . ‘’;
}
 
returnjoin( “\n”, $cloudTags) . “\n”;
}
/**************************
****   Sample usage    ***/
$arr= Array(‘Actionscript’ => 35, ‘Adobe’ => 22, ‘Array’ => 44, ‘Background’ => 43,
‘Blur’ => 18, ‘Canvas’ => 33, ‘Class’ => 15, ‘Color Palette’ => 11, ‘Crop’ => 42,
‘Delimiter’ => 13, ‘Depth’ => 34, ‘Design’ => 8, ‘Encode’ => 12, ‘Encryption’ => 30,
‘Extract’ => 28, ‘Filters’ => 42);
echogetCloud($arr, 12, 36);
 
13. PHP寻找两个字符串的相似性
 
PHP 提供了一个极少使用的 similar_text 函数,但此函数非常有用,用于比较两个字符串并返回相似程度的百分比。
 
similar_text($string1,$string2,$percent);
//$percent will have the percentage of similarity
 
14. PHP在应用程序中使用 Gravatar 通用头像
 
随着 WordPress 越来越普及,Gravatar 也随之流行。由于 Gravatar 提供了易于使用的 API,将其纳入应用程序也变得十分方便。
 
/******************
*@email – Email address to show gravatar for
*@size – size of gravatar
*@default – URL of default gravatar to use
*@rating – rating of Gravatar(G, PG, R, X)
*/
functionshow_gravatar($email,$size,$default,$rating)
{
echo‘‘&default=’.$default.’&size=’.$size.’&rating=’.$rating.’” width=”‘.$size.’px”
height=”‘.$size.’px” />’;
}
 
15. PHP在字符断点处截断文字
 
所谓断字 (word break),即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。
 
// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
functionmyTruncate($string,$limit,$break=”.”,$pad=”…”) {
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit)
return$string;
 
// is $break present between $limit and the end of the string?
if(false !== ($breakpoint= strpos($string,$break,$limit))) {
if($breakpoint< strlen($string) – 1) {
$string= substr($string, 0, $breakpoint) . $pad;
}
}
return$string;
}
/***** Example ****/
$short_string=myTruncate($long_string, 100, ‘ ‘);
 
16. PHP文件 Zip 压缩
 
/* creates a compressed zip file */
functioncreate_zip($files= array(),$destination= ”,$overwrite= false) {
//if the zip file already exists and overwrite is false, return false
if(file_exists($destination) && !$overwrite) { returnfalse; }
//vars
$valid_files= array();
//if files were passed in…
if(is_array($files)) {
//cycle through each file
foreach($filesas $file) {
//make sure the file exists
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
//if we have good files…
if(count($valid_files)) {
//create the archive
$zip= newZipArchive();
if($zip->open($destination,$overwrite? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
returnfalse;
}
//add the files
foreach($valid_filesas $file) {
$zip->addFile($file,$file);
}
//debug
//echo ‘The zip archive contains ‘,$zip->numFiles,’ files with a status of ‘,$zip->status;
 
//close the zip — done!
$zip->close();
 
//check to make sure the file exists
returnfile_exists($destination);
}
else
{
returnfalse;
}
}
/***** Example Usage ***/
$files=array(‘file1.jpg’, ‘file2.jpg’, ‘file3.gif’);
create_zip($files, ‘myzipfile.zip’, true);
 
17. PHP解压缩 Zip 文件
 
/**********************
*@file – path to zip file
*@destination – destination directory for unzipped files
*/
functionunzip_file($file,$destination){
// create object
$zip= newZipArchive() ;
// open archive
if($zip->open($file) !== TRUE) {
die(’Could not open archive’);
}
// extract contents to destination directory
$zip->extractTo($destination);
// close archive
$zip->close();
echo‘Archive extracted to directory’;
}
 
18. PHP为 URL 地址预设 http 字符串
 
有时需要接受一些表单中的网址输入,但用户很少添加 http:// 字段,此代码将为网址添加该字段。
 
if(!preg_match(“/^(http|ftp):/”, $_POST['url'])) {
$_POST['url'] = ‘http://’.$_POST['url'];
}
 
19. PHP将网址字符串转换成超级链接
 
该函数将 URL 和 E-mail 地址字符串转换为可点击的超级链接。
 
functionmakeClickableLinks($text) {
$text= eregi_replace(‘(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)’,
‘\1’,$text);
$text= eregi_replace(‘([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)’,
‘\1\2’,$text);
$text= eregi_replace(‘([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})’,
‘\1’,$text);
 
return$text;
}
 
20. PHP调整图像尺寸
 
创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。
 
/**********************
*@filename – path to the image
*@tmpname – temporary path to thumbnail
*@xmax – max width
*@ymax – max height
*/
functionresize_image($filename,$tmpname,$xmax,$ymax)
{
$ext= explode(“.”,$filename);
$ext= $ext[count($ext)-1];
 
if($ext== “jpg” || $ext== “jpeg”)
$im= imagecreatefromjpeg($tmpname);
elseif($ext== “png”)
$im= imagecreatefrompng($tmpname);
elseif($ext== “gif”)
$im= imagecreatefromgif($tmpname);
 
$x= imagesx($im);
$y= imagesy($im);
 
if($x<= $xmax&& $y<= $ymax)
return$im;
 
if($x>= $y) {
$newx= $xmax;
$newy= $newx* $y/ $x;
}
else{
$newy= $ymax;
$newx= $x/ $y* $newy;
}
 
$im2= imagecreatetruecolor($newx,$newy);
imagecopyresized($im2,$im, 0, 0, 0, 0, floor($newx),floor($newy),$x,$y);
return$im2;
}
 
21. PHP检测 ajax 请求
 
大多数的 JavaScript 框架如 jquery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,头当他们一个ajax请求,因此你可以在服务器端侦测到 Ajax 请求。
 
if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == ‘xmlhttprequest’){
//If AJAX Request Then
}else{
//something else
}
0 0