为开发者准备的9个实用PHP代码片段(转)
[導(dǎo)讀] 當(dāng)你開發(fā)網(wǎng)站、app或博客系統(tǒng)時,如果有一些實用的代碼片段可以直接使用,就可以節(jié)省你大量的時間和精力。這篇文章就為你分享幾個實用的PHP代碼片段,幫助你的Web開發(fā)。
?????? 本文由PHP100中文網(wǎng)編譯,轉(zhuǎn)載請看文末的轉(zhuǎn)載要求,謝謝合作! 當(dāng)你開發(fā)網(wǎng)站、app或博客系統(tǒng)時,如果有一些實用的代碼片段可以直接使用,就可以節(jié)省你大量的時間和精力。這篇文章就為你分享幾個實用的PHP代碼片段,幫助你的Web開發(fā)。更多PHP的學(xué)習(xí)內(nèi)容,您還可以參考《深入探討PHP類的封裝與繼承》《PHP比較運算符的詳細(xì)學(xué)習(xí)》《國外PHP學(xué)習(xí)網(wǎng)站書籍資料匯總》《超實用PHP函數(shù)總結(jié)整理》,希望對你的PHP學(xué)習(xí)有幫助。?
一.查看郵件是否已被閱讀
當(dāng)你發(fā)送郵件時,你肯定很想知道你的郵件是否已被對方查看。下面的代碼就能實現(xiàn)記錄閱讀你郵件的IP地址,還有實際的閱讀日期和時間。error_reporting(0);
Header("Content-Type:?image/jpeg");
//Get?IP
if?(!empty($_SERVER['HTTP_CLIENT_IP']))
{
??$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif?(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
??$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
??$ip=$_SERVER['REMOTE_ADDR'];
}
//Time
$actual_time?=?time();
$actual_day?=?date('Y.m.d',?$actual_time);
$actual_day_chart?=?date('d/m/y',?$actual_time);
$actual_hour?=?date('H:i:s',?$actual_time);
//GET?Browser
$browser?=?$_SERVER['HTTP_USER_AGENT'];
????
//LOG
$myFile?=?"log.txt";
$fh?=?fopen($myFile,?'a+');
$stringData?=?$actual_day?.?'?'?.?$actual_hour?.?'?'?.?$ip?.?'?'?.?$browser?.?'?'?.?"\r\n";
fwrite($fh,?$stringData);
fclose($fh);
//Generate?Image?(Es.?dimesion?is?1x1)
$newimage?=?ImageCreate(1,1);
$grigio?=?ImageColorAllocate($newimage,255,255,255);
ImageJPEG($newimage);
ImageDestroy($newimage);
?>
源代碼:http://www.emoticode.net/php/code-to-find-out-if-your-email-has-been-read.html
?
二.從網(wǎng)頁中提取關(guān)鍵詞
這段優(yōu)秀的代碼可以簡單地實現(xiàn)從網(wǎng)頁中提取關(guān)鍵詞的功能。$meta?=?get_meta_tags('http://www.emoticode.net/');
$keywords?=?$meta['keywords'];
//?Split?keywords
$keywords?=?explode(',',?$keywords?);
//?Trim?them
$keywords?=?array_map(?'trim',?$keywords?);
//?Remove?empty?values
$keywords?=?array_filter(?$keywords?);
print_r(?$keywords?);
源代碼:http://www.emoticode.net/php/extract-keywords-from-any-webpage.html
?
三.查找頁面上的所有鏈接
使用DOM,你可以在任意頁面上抓取鏈接,示例如下。$html?=?file_get_contents('http://www.php100.com');
$dom?=?new?DOMDocument();
@$dom->loadHTML($html);
//?grab?all?the?on?the?page
$xpath?=?new?DOMXPath($dom);
$hrefs?=?$xpath->evaluate("/html/body//a");
for?($i?=?0;?$i?<?$hrefs->length;?$i++)?{
???????$href?=?$hrefs->item($i);
???????$url?=?$href->getAttribute('href');
???????echo?$url.'';
}
源代碼:http://snipplr.com/view/70489/find-all-links-on-a-page/
?
四.自動轉(zhuǎn)換URL為可點擊超鏈接
在Wordpress中,如果你想自動轉(zhuǎn)換所有的URLs為可點擊超鏈接,你就可以使用內(nèi)置函數(shù)make_clickable()實現(xiàn)。當(dāng)你在WordPress外操作時,你可以參考wp-includes/formatting.php中的源代碼。??
function?_make_url_clickable_cb($matches)?{
??? $ret?=?'';
??? $url?=?$matches[2];
?
??? if?(?empty($url)?)
???????? return?$matches[0];
??? //?removed?trailing?[.,;:]?from?URL
??? if?(?in_array(substr($url,?-1),?array('.',?',',?';',?':'))?===?true?)?{
??????? $ret?=?substr($url,?-1);
??????? $url?=?substr($url,?0,?strlen($url)-1);
??? }
??? return?$matches[1]?.?"$url"?.?$ret;
}
?
function?_make_web_ftp_clickable_cb($matches)?{
??? $ret?=?'';
??? $dest?=?$matches[2];
??? $dest?=?'http://'?.?$dest;
?
??? if?(?empty($dest)?)
??????? return?$matches[0];
??? //?removed?trailing?[,;:]?from?URL
??? if?(?in_array(substr($dest,?-1),?array('.',?',',?';',?':'))?===?true?)?{
??????? $ret?=?substr($dest,?-1);
??????? $dest?=?substr($dest,?0,?strlen($dest)-1);
??? }
????return?$matches[1]?.?"$dest"?.?$ret;
}
?
function?_make_email_clickable_cb($matches)?{
??? $email?=?$matches[2]?.?'@'?.?$matches[3];
??? return?$matches[1]?.?"$email";
}
?
function?make_clickable($ret)?{
??? $ret?=?'?'?.?$ret;
??? //?in?testing,?using?arrays?here?was?found?to?be?faster
??? $ret?=?preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)???? #is',?'_make_url_clickable_cb',?$ret);
??? $ret?=?preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is',?'_make_web_ftp_clickable_cb',?$ret);
??? $ret?=?preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i',?'_make_email_clickable_cb',?$ret);
?
//?this?one?is?not?in?an?array?because?we?need?it?to?run?last,?for?cleanup?of?accidental?links?within?links
??? $ret?=?preg_replace("#(]+?>|>))]+?>([^>]+?)#i",?"$1$3",?$ret);
??? $ret?=?trim($ret);
??? return?$ret;
}
源代碼:http://zenverse.net/php-function-to-auto-convert-url-into-hyperlink/
?
?
五.創(chuàng)建數(shù)據(jù)URI
數(shù)據(jù)URI可以幫助將圖像嵌入到HTML/CSS/JS中,從而節(jié)省HTTP請求。下面的函數(shù)可以利用$file創(chuàng)建數(shù)據(jù)URI。?function?data_uri($file,?$mime)?{
? ? $contents=file_get_contents($file);
?? ?$base64=base64_encode($contents);
??? echo?"data:$mime;base64,$base64";
}
源代碼:http://css-tricks.com/snippets/php/create-data-uris/
?
六.下載和保存遠(yuǎn)程圖片到你的服務(wù)器
當(dāng)你在搭建網(wǎng)站時,很可能會從遠(yuǎn)程服務(wù)器上下載圖片保存到你自己的服務(wù)器上,下面的代碼就可以幫助你實現(xiàn)這個功能。$image?=?file_get_contents('http://www.php100.com/image.jpg');
file_put_contents('/images/image.jpg',?$image);???//Where?to?save?the?image
源代碼:http://www.catswhocode.com/blog/snippets/download-save-a-remote-image-on-your-server-using-php
?
七.移除Microsoft?Word?HTML標(biāo)簽
當(dāng)你使用Microsoft?Word時,會創(chuàng)建很多標(biāo)簽tag,比如font、span、style、class等,這些標(biāo)簽在Word中十分有用,但 當(dāng)你從Word中把文本粘貼到網(wǎng)頁上,就會出現(xiàn)很多沒用的標(biāo)簽。下面實用的函數(shù)可以幫助你清除所有的Word?HTML標(biāo)簽。function?cleanHTML($html)?{
///?
///?Removes?all?FONT?and?SPAN?tags,?and?all?Class?and?Style?attributes.
///?Designed?to?get?rid?of?non-standard?Microsoft?Word?HTML?tags.
///?
//?start?by?completely?removing?all?unwanted?tags
$html?=?ereg_replace("<(/)?(font|span|del|ins)[^>]*>","",$html);
//?then?run?another?pass?over?the?html?(twice),?removing?unwanted?attributes
$html?=?ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|'[^']*'|[^>]+)([^>]*)>","<\1>",$html);
$html?=?ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|'[^']*'|[^>]+)([^>]*)>","<\1>",$html);
return?$html
}
源代碼:http://tim.mackey.ie/CommentView,guid,2ece42de-a334-4fd0-8f94-53c6602d5718.aspx
?
八.檢測瀏覽器語言
如果你的網(wǎng)站是多種語言的,下面的代碼可以幫助你檢測瀏覽器語言,它會返回客戶端瀏覽器的默認(rèn)語言。function?get_client_language($availableLanguages,?$default='en'){
??? if?(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))?{
????????? $langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
????????? foreach?($langs?as?$value){
????????????? $choice=substr($value,0,2);
????????????? if(in_array($choice,?$availableLanguages)){
??????????????????? return?$choice;
??????????????}
??????????}
????? }?
????? return?$default;
}
源代碼:http://snipplr.com/view/12631/detect-browser-language/
?
九.顯示Facebook上的粉絲數(shù)量
如果在你的網(wǎng)站或博客中,鏈有Facebook頁面,你可能希望顯示Facebook上的粉絲數(shù)量,下面的代碼就可以幫助你獲取粉絲數(shù)量,另外不要忘記在代碼第二行添加你的頁面ID。?? ?$page_id?=?"YOUR?PAGE-ID";
????$xml?=?@simplexml_load_file("http://api.facebook.com/restserver.php?????? method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%?? 20page_id=".$page_id."")?or?die?("a?lot");
??? $fans?=?$xml->page->fan_count;
??? echo?$fans;
?>?
源代碼:http://www.wprecipes.com/display-number-of-facebook-fans-in-full-text-on-your-wordpress-blog
原文:http://www.catswhocode.com/blog/useful-snippets-for-php-developers
譯文:http://www.php100.com/html/dujia/2015/0108/8305.html
(翻譯:PHP100_Zeroing)?
?
轉(zhuǎn)載于:https://www.cnblogs.com/huojing/articles/4521840.html
總結(jié)
以上是生活随笔為你收集整理的为开发者准备的9个实用PHP代码片段(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入沟通的重要性——《大道至简》第四章读
- 下一篇: 《JS权威指南学习总结--6.1原型》