PHP几个实用自定义函数小结
本文实例总结了PHP几个实用自定义函数。分享给大家供大家参考,具体如下:
最近在看代码,发现以下是几个比较实用的函数。
1、取客户端IP
functiongetOnlineIp(){
$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;
}
这里,如果使用多级代理的用户,真实IP是取不到的。
2、字符串截取,支持中文
functiongetStrTruncate($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;
}
}
echogetStrTruncate("海底苍鹰博客",7);//结果是海底苍,utf8一个汉字对应二个字符
3、多长时间前的时间函数,论坛,博客常用
functiontimeFromNow($dateline){
if(emptyempty($dateline))returnfalse;
$seconds=time()-$dateline;
if($seconds<60){
return"1分钟前";
}elseif($seconds<3600){
returnfloor($seconds/60)."分钟前";
}elseif($seconds<24*3600){
returnfloor($seconds/3600)."小时前";
}elseif($seconds<48*3600){
returndate("昨天H:i",$dateline)."";
}else{
returndate('Y-m-d',$dateline);
}
}
echotimeFromNow(strtotime("2012-07-0714:15:13"));//昨天14:15
echotimeFromNow(strtotime("2012-07-0814:15:13"));//1小前
4、过滤部分标签
functiondelTags($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="<ahref='#'>asdfasdfsd</a>====<script>alert(1111)</script>";
echodelTags($str);//结果:<ahref='#'>asdfasdfsd</a>====alert(1111)
echostrip_tags($str);//结果:sdfasdfsd====alert(1111)
如果要过滤所有标签strip_tags就够用了。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基本语法入门教程》、《php面向对象程序设计入门教程》及《php常用函数与技巧总结》
希望本文所述对大家PHP程序设计有所帮助。