PHP幾個實(shí)用自定義函數(shù)小結(jié)
本文實(shí)例總結(jié)了PHP幾個實(shí)用自定義函數(shù)。分享給大家供大家參考,具體如下:
最近在看代碼,發(fā)現(xiàn)以下是幾個比較實(shí)用的函數(shù)。
1、取客戶端IP
function getOnlineIp() {
$strOnlineIp = "";
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches);
$strOnlineIp = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
return $strOnlineIp;
}
這里,如果使用多級代理的用戶,真實(shí)IP是取不到的。
2、字符串截取,支持中文
function getStrTruncate($string, $length = 80, $etc = ''){
if ($length == 0) return '';
mb_internal_encoding("UTF-8");
$string = str_replace("\n","",$string);
$strlen = mb_strwidth($string);
if ($strlen > $length) {
$etclen = mb_strwidth($etc);
$length = $length - $etclen;
$str=''; $n = 0;
for($i=0; $i<$length; $i++) {
$c = mb_substr($string, $i, 1);
$n += mb_strwidth($c);
if ($n>$length) { break; }
$str .= $c;
}
return $str.$etc;
} else {
return $string;
}
}
echo getStrTruncate("海底蒼鷹博客",7); //結(jié)果是海底蒼,utf8一個漢字對應(yīng)二個字符
3、多長時間前的時間函數(shù),論壇,博客常用
function timeFromNow($dateline) {
if(emptyempty($dateline)) return false;
$seconds = time() - $dateline;
if ($seconds < 60){
return "1分鐘前";
}elseif($seconds < 3600){
return floor($seconds/60)."分鐘前";
}elseif($seconds < 24*3600){
return floor($seconds/3600)."小時前";
}elseif($seconds < 48*3600){
return date("昨天 H:i", $dateline)."";
}else{
return date('Y-m-d', $dateline);
}
}
echo timeFromNow(strtotime("2012-07-07 14:15:13")); //昨天 14:15
echo timeFromNow(strtotime("2012-07-08 14:15:13")); //1小前
4、過濾部分標(biāo)簽
function delTags($str)
{
$farr = array(
"/<(\/?)(script|i?frame|style|html|body|title|link|meta|form|input|embed|object|textarea|\?|\%)([^>]*?)>/isU",
"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU"
);
$tarr = array(
"",
""
);
$str = preg_replace( $farr,$tarr,$str);
return $str;
}
$str = "<a href='#'>asdfasdfsd</a>====<script>alert(1111)</script>";
echo delTags($str); //結(jié)果:<a href='#'>asdfasdfsd</a>====alert(1111)
echo strip_tags($str); //結(jié)果:sdfasdfsd====alert(1111)
如果要過濾所有標(biāo)簽strip_tags就夠用了。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》及《php常用函數(shù)與技巧總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- php實(shí)現(xiàn)window平臺的checkdnsrr函數(shù)
- 淺析PHP程序防止ddos,dns,集群服務(wù)器攻擊的解決辦法
- 簡單談?wù)凱HP中strlen 函數(shù)
- php強(qiáng)大的時間轉(zhuǎn)換函數(shù)strtotime
- PHP函數(shù)超時處理方法
- PHP閉包函數(shù)詳解
- PHP的幾個常用加密函數(shù)
- PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總
- 利用PHP腳本在Linux下用md5函數(shù)加密字符串的方法
- linux系統(tǒng)上支持php的 iconv()函數(shù)的方法
- PHP執(zhí)行l(wèi)inux系統(tǒng)命令的常用函數(shù)使用說明
- PHP函數(shù)checkdnsrr用法詳解(Windows平臺用法)
相關(guān)文章
簡單說說PHP優(yōu)化那些事(經(jīng)驗(yàn)分享)
下面我想講講我對PHP優(yōu)化的理解。優(yōu)化的目的是花最少的代價換來最快的運(yùn)行速度與最容易維護(hù)的代碼2014-11-11
php過濾輸入操作之htmlentities與htmlspecialchars用法分析
這篇文章主要介紹了php過濾輸入操作之htmlentities與htmlspecialchars用法,結(jié)合實(shí)例形式分析了php數(shù)據(jù)過濾操作的相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下2017-02-02
解析在PHP中使用mysqli擴(kuò)展庫對mysql的操作
本篇文章是對在PHP中使用mysqli擴(kuò)展庫對mysql的操作進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
Thinkphp和onethink實(shí)現(xiàn)微信支付插件
這篇文章主要為大家詳細(xì)介紹了Thinkphp和onethink實(shí)現(xiàn)微信支付插件,感興趣的小伙伴們可以參考一下2016-04-04
php 實(shí)現(xiàn)賬號不能同時登陸的方法分析【當(dāng)其它地方登陸時,當(dāng)前賬號失效】
這篇文章主要介紹了php 實(shí)現(xiàn)賬號不能同時登陸的方法,結(jié)合實(shí)例形式分析了PHP基于session實(shí)現(xiàn)當(dāng)其它地方登陸時,當(dāng)前賬號失效的相關(guān)操作技巧,需要的朋友可以參考下2020-03-03
PHP數(shù)組操作——獲取數(shù)組最后一個值的方法
這篇文章主要介紹了PHP數(shù)組操作——獲取數(shù)組最后一個值的方法,需要的朋友可以參考下2015-04-04

