Web开发者必备:21个超实用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;
[*]
$password.=$vocal;
[*]}
[*]return$password;
[*]}
2. PHP生成一个随机字符串
如果不需要可阅读的字符串,使用此函数替代,即可创建一个随机字符串,作为用户的随机密码等。
[*]/*************
[*]*@l-lengthofrandomstring
[*]*/
[*]functiongenerate_rand($l){
[*]
$c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
[*]srand((double)microtime()*1000000);
[*]
for($i=0;$i<$l;$i++){
[*]
$rand.=$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("^(+)(\.+)*@(+)(\.+)*(\.{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-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;//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('(+@(+.)+{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;
[*]
[*]
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]