您的位置:首页 > 编程语言 > PHP开发

Web开发者必备:21个超实用PHP代码

2013-04-30 00:41 941 查看
1. PHP可阅读随机字符串

此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。

/***************  
@length - length of random string (must be a multiple of 2)**************/  
function readable_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  
*/  
function generate_rand($l){   
$c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";   
srand((double)microtime()*1000000);   
for($i=0; $i<$l; $i++) {   
$rand.= $c[rand()%strlen($c)];   
}   
return $rand;  
 }  

   3. PHP编码电子邮件地址

使用此代码,可以将任何电子邮件地址编码为 html 字符实体,以防止被垃圾邮件程序收集。

function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' )  
{   
// remplazar aroba y puntos   
$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($email as $e)   
{   
$encoded .= "document.write('$e');";  
 }   
$encoded .= "document.write('$part3');";  
 foreach($linkText as $l)   
{  
 $encoded .= "document.write('$l');";   
}   
$encoded .= "document.write('$part4');";   
$encoded .= ''; return $encoded;}  

4. PHP验证邮件地址

电子邮件验证也许是中最常用的网页表单验证,此代码除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录,使邮件验证功能更加强大。

function is_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);   
return getmxrr($domain, $mxrecords);   
}   
else   
return true;   
else   
return false;  
}   5. PHP列出目录内容function list_files($dir){  
 if(is_dir($dir))  
 {   
if($handle = opendir($dir)) {  
 while(($file = readdir($handle)) !== false)   
{   
if($file != "." && $file != ".." && $file != "Thumbs.db")  
 { echo '<a target="_blank" href="'.$dir.$file.'">'.$file.'a><br>'."\n";   
}   
}  
 closedir($handle);   
}   
}  
}  

  6. PHP销毁目录
删除一个目录,包括它的内容。/*****  
*@dir - Directory to destroy  
*@virtual[optional]- whether a virtual directory  
*/  
function destroyDir($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);   
return true;   
}   
else  
 {   
return false;  
 }  
}  

   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="xml version='1.0'?> 
<users> 
 <user id='398'> 
 <name>Fooname>   
<email>foo@bar.comname> 
 user>   
<user id='867'> 
 <name>Foobarname>   
<email>foobar@foo.comname>   
user>users>";  
 //load the xml string using simplexml  
$xml = simplexml_load_string($xml_string);  
 //loop through the each node of user  
foreach ($xml->user as $user)  
{   
//access attribute  
 echo $user['id'], ' ';   
//subnodes are accessed by -> operator   
echo $user->name, ' ';   
echo $user->email, '<br />';  
}  

9. PHP创建日志缩略名创建用户友好的日志缩略名。function create_slug($string){   
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);  
 return $slug;  
}  
  10. PHP获取客户端真实 IP 地址
 该函数将获取用户的真实 IP 地址,即便他使用代理服务器。function getRealIpAddr()  
{   
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  
*/  
function force_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创建标签云function getCloud( $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( $data as $tag => $count )  
 {   
$size = $minFontSize + ( $count - $minimumCount ) * ( $maxFontSize - $minFontSize ) / $spread;  
 $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'  
 . '" href="#" title="\'' . $tag .  
 '\' returned a count of ' . $count . '">'  
 . htmlspecialchars( stripslashes( $tag ) ) . 'a>';  
 }   
return join( "\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);  
echo getCloud($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)  
*/  
function show_gravatar($email, $size, $default, $rating)  
{  
 echo '<img src="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),即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。// Original PHP code by Chirp Internet: www.chirp.com.au  
// Please acknowledge use of this code by including this header.  
function myTruncate($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 */  
function create_zip($files = array(),$destination = '',$overwrite = false) {   
//if the zip file already exists and overwrite is false, return false  
 if(file_exists($destination) && !$overwrite) { return false; }   
//vars $valid_files = array();   
//if files were passed in...   
if(is_array($files)) {   
//cycle through each file  
foreach($files as $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 = new ZipArchive();   
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { return false;  
 }   
//add the files   
foreach($valid_files as $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  
 return file_exists($destination);  
 }   
else   
{  
 return false;   
}  
}  
/***** 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  
*/  
function unzip_file($file, $destination){  
// create object  
$zip = new ZipArchive() ;  
// 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 地址字符串转换为可点击的超级链接。function makeClickableLinks($text) {  
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',  
'<a href="\1">\1a>', $text);  
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',  
'\1<a href="http://\2">\2a>', $text);  
$text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',  
'<a href="mailto:\1">\1a>', $text);   
 
return $text;  

20. PHP调整图像尺寸
创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。/**********************  
*@filename - path to the image  
*@tmpname - temporary path to thumbnail  
*@xmax - max width  
*@ymax - max height  
*/  
function resize_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  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Web开发 PHP