|
最近在看代码,发现以下是几个比较实用的函数。
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就够用了。 |
|
|