设为首页 收藏本站
查看: 718|回复: 0

[经验分享] Web开发者必备:21个超实用PHP代码

[复制链接]

尚未签到

发表于 2017-4-7 10:12:34 | 显示全部楼层 |阅读模式
  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='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'<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>Fooname>

    • <email>foo@bar.comname>

    • user>

    • <userid='867'>

    • <name>Foobarname>

    • <email>foobar@foo.comname>
    • 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)
    • {

    • $minminimumCount=min(array_values($data));

    • $maxmaximumCount=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在字符断点处截断文字
      所谓断字 (word break),即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。


    • //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">\1a>',$text);

    • $text=eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',

    • '\1<ahref="http://\2">\2a>',$text);

    • $text=eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',

    • '<ahref="mailto:\1">\1a>',$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
    • }





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-361386-1-1.html 上篇帖子: PHP不影响正常运行的调试技巧 下篇帖子: PHP调试利器XDebug的安装与使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表