二十一个实用便利的PHP代码摘录.docx
《二十一个实用便利的PHP代码摘录.docx》由会员分享,可在线阅读,更多相关《二十一个实用便利的PHP代码摘录.docx(12页珍藏版)》请在冰豆网上搜索。
二十一个实用便利的PHP代码摘录
1.PHP可阅读随机字符串
此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。
/**************
*@length-lengthofrandomstring(mustbeamultipleof2)
**************/
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-lengthofrandomstring
*/
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@',$linkText='ContactUs',$attrs='class="emailencoder"')
{
//remplazararobaypuntos
$email=str_replace('@','@',$email);
$email=str_replace('.','.',$email);
$email=str_split($email,5);
$linkText=str_replace('@','@',$linkText);
$linkText=str_replace('.','.',$linkText);
$linkText=str_split($linkText,5);
$part1='$part2='ilto:';
$part3='"'.$attrs.'>';
$part4='';
$encoded='';
$encoded.="document.write('$part1');";
$encoded.="document.write('$part2');";
foreach($emailas$e)
{
$encoded.="document.write('$e');";
}
$encoded.="document.write('$part3');";
foreach($linkTextas$l)
{
$encoded.="document.write('$l');";
}
$encoded.="document.write('$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-Directorytodestroy
*@virtual[optional]-whetheravirtualdirectory
*/
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@","interest":
["wordpress","php"]}';
$obj=$json_string);
echo$obj->name;//printsfoo
echo$obj->interest[1];//printsphp
8.PHP解析XML数据
//xmlstring
$xml_string="
xmlversion='1.0'?
>
Foo
foo@
Foobar
foobar@
";
//loadthexmlstringusingsimplexml
$xml=simplexml_load_string($xml_string);
//loopthroughtheeachnodeofuser
foreach($xml->useras$user)
{
//accessattribute
echo$user['id'],'';
//subnodesareaccessedby->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']))
//tocheckipispassfromproxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return$ip;
}
11.PHP强制性文件下载
为用户提供强制性的文件下载功能。
/********************
*@file-pathtofile
*/
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"Nofileselected";
}
}
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[]=''.floor($size).'px'
.'"href="#"title="\''.$tag.
'\'returnedacountof'.$count.'">'
.htmlspecialchars(stripslashes($tag)).'';
}
returnjoin("\n",$cloudTags)."\n";
}
/**************************
****Sampleusage***/
$arr=Array('Actionscript'=>35,'Adobe'=>22,'Array'=>44,'Background'=>43,
'Blur'=>18,'Canvas'=>33,'Class'=>15,'ColorPalette'=>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);
//$percentwillhavethepercentageofsimilarity
14.PHP在应用程序中使用Gravatar通用头像
随着WordPress越来越普及,Gravatar也随之流行。
由于Gravatar提供了易于使用的API,将其纳入应用程序也变得十分方便。
/******************
*@email-Emailaddresstoshowgravatarfor
*@size-sizeofgravatar
*@default-URLofdefaultgravatartouse
*@rating-ratingofGravatar(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在字符断点处截断文字
所谓断字(wordbreak),即一个单词可在转行时断开的地方。
这一函数将在断字处截断字符串。
//OriginalPHPcodebyChirpInternet:
.au
//Pleaseacknowledgeuseofthiscodebyincludingthisheader.
functionmyTruncate($string,$limit,$break=".",$pad="..."){
//returnwithnochangeifstringisshorterthan$limit
if(strlen($string)<=$limit)
return$string;
//is$breakpresentbetween$limitandtheendofthestring?
if(false!
==($breakpoint=strpos($string,$break,$limit))){
if($breakpoint$string=substr($string,0,$breakpoint).$pad;
}
}
return$string;
}
/*****Example****/
$short_string=myTruncate($long_string,100,'');
16.PHP文件Zip压缩
/*createsacompressedzipfile*/
functioncreate_zip($files=array(),$destination='',$overwrite=false){
//ifthezipfilealreadyexistsandoverwriteisfalse,returnfalse
if(file_exists($destination)&&!
$overwrite){returnfalse;}
//vars
$valid_files=array();
//iffileswerepassedin...
if(is_array($files)){
//cyclethrougheachfile
foreach($filesas$file){
//makesurethefileexists
if(file_exists($file)){
$valid_files[]=$file;
}
}
}
//ifwehavegoodfiles...
if(count($valid_files)){
//createthearchive
$zip=newZipArchive();
if($zip->open($destination,$overwrite?
ZIPARCHIVE:
:
OVERWRITE:
ZIPARCHIVE:
:
CREATE)!
==true){
returnfalse;
}
//addthefiles
foreach($valid_filesas$file){
$zip->addFile($file,$file);
}
//debug
//echo'Theziparchivecontains',$zip->numFiles,'fileswithastatusof',$zip->status;
//closethezip--done!
$zip->close();
//checktomakesurethefileexists
returnfile_exists($destination);
}
else
{
returnfalse;
}
}
/*****ExampleUsage***/
$files=array('file1.jpg','file2.jpg','file3.gif');
create_zip($files,'myzipfile.zip',true);
17.PHP解压缩Zip文件
/**********************
*@file-pathtozipfile
*@destination-destinationdirectoryforunzippedfiles
*/
functionunzip_file($file,$destination){
//createobject
$zip=newZipArchive();
//openarchive
if($zip->open($file)!
==TRUE){
die(’Couldnotopenarchive’);
}
//extractcontentstodestinationdirectory
$zip->extractTo($destination);
//closearchive
$zip->close();
echo'Archiveextractedtodirectory';
}
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">\2',$text);
$text=eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
'\1">\1',$text);
return$text;
}
20.PHP调整图像尺寸
创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。
/**********************
*@filename-pathtotheimage
*@tmpname-temporarypathtothumbnail