1. PHP可閱讀隨機(jī)字符串
此代碼將創(chuàng)建一個人類可讀的字符串,更接近字典中的單詞,實用且密碼有效。
/***************
*@length-lengthofrandomstring(mustbeamultipleof2)
******************/
函數(shù)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',
an>"o","u");?2. PHP生成一個隨機(jī)字符串
如果不需要可閱讀的字符串,使用此函數(shù)替代,即可創(chuàng)建一個隨機(jī)字符串,作為用戶的隨機(jī)密碼等。
- /*************?
- *@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?=?'<a?href="ma';?
- ????$part2?=?'ilto:';?
- ????$part3?=?'"?'.?$attrs?.'?>';?
- ????$part4?=?'</a>';???
- ?
- ????$encoded?=?'<script?type="text/javascript">';?
- ????$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?.=?'</script>';???
- ?
- ????return?$encoded;?
- }?
4. PHP驗證郵件地址
電子郵件驗證也許是中最常用的網(wǎng)頁表單驗證,此代碼除了驗證電子郵件地址,也可以選擇檢查郵件域所屬 DNS 中的 MX 記錄,使郵件驗證功能更加強(qiáng)大。
- 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列出目錄內(nèi)容
- 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銷毀目錄
刪除一個目錄,包括它的內(nèi)容。
- /*****?
- *@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 數(shù)據(jù)
與大多數(shù)流行的 Web 服務(wù)如 twitter 通過開放 API 來提供數(shù)據(jù)一樣,它總是能夠知道如何解析 API 數(shù)據(jù)的各種傳送格式,包括 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 數(shù)據(jù)
- //xml?string?
- $xml_string="<?xml?version='1.0'?>?
- <users>?
- <user?id='398'>?
- <name>Foo</name>?
- <email>foo@bar.com</name>?
- </user>?
- <user?id='867'>?
- <name>Foobar</name>?
- <email>foobar@foo.com</name>?
- </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創(chuàng)建日志縮略名
創(chuàng)建用戶友好的日志縮略名。
- function?create_slug($string){?
- $slug=preg_replace('/[^A-Za-z0-9-]+/',?'-',?$string);?
- return?$slug;?
- }?
10. PHP獲取客戶端真實 IP 地址
該函數(shù)將獲取用戶的真實 IP 地址,即便他使用代理服務(wù)器。
- 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強(qiáng)制性文件下載
為用戶提供強(qiáng)制性的文件下載功能。
- /********************?
- *@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創(chuàng)建標(biāo)簽云
- function?getCloud(?$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(?$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 函數(shù),但此函數(shù)非常有用,用于比較兩個字符串并返回相似程度的百分比。
- similar_text($string1,?$string2,?$percent);?
- //$percent?will?have?the?percentage?of?similarity?
14. PHP在應(yīng)用程序中使用 Gravatar 通用頭像
隨著 WordPress 越來越普及,Gravatar 也隨之流行。由于 Gravatar 提供了易于使用的 API,將其納入應(yīng)用程序也變得十分方便。
- /******************?
- *@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在字符斷點(diǎn)處截斷文字
所謂斷字 (word break),即一個單詞可在轉(zhuǎn)行時斷開的地方。這一函數(shù)將在斷字處截斷字符串。
- //?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 地址預(yù)設(shè) http 字符串
有時需要接受一些表單中的網(wǎng)址輸入,但用戶很少添加 http:// 字段,此代碼將為網(wǎng)址添加該字段。
- if?(!preg_match("/^(http|ftp):/",?$_POST['url']))?{?
- ???$_POST['url']?=?'http://'.$_POST['url'];?
- }?
19. PHP將網(wǎng)址字符串轉(zhuǎn)換成超級鏈接
該函數(shù)將 URL 和 E-mail 地址字符串轉(zhuǎn)換為可點(diǎn)擊的超級鏈接。
- function?makeClickableLinks($text)?{?
- $text?=?eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',?
- '<a?href="1">1</a>',?$text);?
- $text?=?eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',?
- '1<a?href="http://2">2</a>',?$text);?
- $text?=?eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',?
- '<a?href="mailto:1">1</a>',?$text);??
- ?
- return?$text;?
- }?
20. PHP調(diào)整圖像尺寸
創(chuàng)建圖像縮略圖需要許多時間,此代碼將有助于了解縮略圖的邏輯。
- /**********************?
- *@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 請求
大多數(shù)的 JavaScript 框架如 jquery,Mootools 等,在發(fā)出 Ajax 請求時,都會發(fā)送額外的 HTTP_X_REQUESTED_WITH 頭部信息,頭當(dāng)他們一個ajax請求,因此你可以在服務(wù)器端偵測到 Ajax 請求。
- if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH'])?&&?strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])?==?'xmlhttprequest'){?
- ????//If?AJAX?Request?Then?
- }else
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!