zl程序教程

您现在的位置是:首页 >  后端

当前栏目

收集的二十一个实用便利的PHP函数代码

PHP代码 函数 实用 收集 便利
2023-06-13 09:14:18 时间
PHP是目前使用最广泛的基于Web的编程语言,驱动着数以百万计的网站,其中也包括如Facebook等一些大型站点。这里收集了21段实用便捷的PHP代码摘录,对每种类型的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@domain.com",$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="<ahref="ma";
   $part2="ilto:";
   $part3=""".$attrs.">";
   $part4="</a>"; 

   $encoded="<scripttype="text/javascript">";
   $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.="</script>"; 

   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"<atarget="_blank"href="".$dir.$file."">".$file."</a><br>"."\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@foobar.com","interest":["wordpress","php"]}";
$obj=json_decode($json_string);
echo$obj->name;//printsfoo
echo$obj->interest[1];//printsphp

8.PHP解析XML数据

 

//xmlstring
$xml_string="<?xmlversion="1.0"?>
<users>
<userid="398">
<name>Foo</name>
<email>foo@bar.com</name>
</user>
<userid="867">
<name>Foobar</name>
<email>foobar@foo.com</name>
</user>
</users>";

//loadthexmlstringusingsimplexml
$xml=simplexml_load_string($xml_string);

//loopthroughtheeachnodeofuser
foreach($xml->useras$user)
{
//accessattribute
echo$user["id"],"";
//subnodesareaccessedby->operator
echo$user->name,"";
echo$user->email,"<br/>";
}

 

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[]="<astyle="font-size:".floor($size)."px"
.""href="#"title="\"".$tag.
"\"returnedacountof".$count."">"
.htmlspecialchars(stripslashes($tag))."</a>";
}

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"<imgsrc="http://www.gravatar.com/avatar.php?gravatar_id=".md5($email).
"&default=".$default."&size=".$size."&rating=".$rating.""width="".$size."px"
height="".$size."px"/>";
}

 

15.PHP在字符断点处截断文字

所谓断字(wordbreak),即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。

 

//OriginalPHPcodebyChirpInternet:www.chirp.com.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<strlen($string)-1){
$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@:%_+.~#?&//=]+)",
"<ahref="\1">\1</a>",$text);
$text=eregi_replace("([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)",
"\1<ahref="http://\2">\2</a>",$text);
$text=eregi_replace("([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})",
"<ahref="mailto:\1">\1</a>",$text);

return$text;
}

 

20.PHP调整图像尺寸

创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。

 

/**********************
*@filename-pathtotheimage
*@tmpname-temporarypathtothumbnail
*@xmax-maxwidth
*@ymax-maxheight
*/
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"){
   //IfAJAXRequestThen
}else{
//somethingelse
}

英文原稿:21ReallyUseful&HandyPHPCodeSnippets|WebDeveloperPlus

翻译整理:21+实用便捷的PHP代码摘录|芒果