VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP几个实用自定义函数小结

这篇文章主要介绍了PHP几个实用自定义函数,结合实例总结分析了PHP网络操作、字符串操作、时间操作及正则表达式使用等技巧,需要的朋友可以参考下。

本文实例总结了PHP几个实用自定义函数,分享给大家供大家参考,具体如下:

最近在看代码,发现以下是几个比较实用的函数。

1、取客户端IP

  1. function getOnlineIp() { 
  2.   $strOnlineIp = ""; 
  3.   if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 
  4.     $onlineip = getenv('HTTP_CLIENT_IP'); 
  5.   } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { 
  6.     $onlineip = getenv('HTTP_X_FORWARDED_FOR'); 
  7.   } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { 
  8.     $onlineip = getenv('REMOTE_ADDR'); 
  9.   } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { 
  10.     $onlineip = $_SERVER['REMOTE_ADDR']; 
  11.   } 
  12.   preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches); 
  13.   $strOnlineIp = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown'; 
  14.   return $strOnlineIp; 
  15. } 

这里,如果使用多级代理的用户,真实IP是取不到的。

2、字符串截取,支持中文

  1. function getStrTruncate($string, $length = 80, $etc = ''){ 
  2.   if ($length == 0) return ''; 
  3.   mb_internal_encoding("UTF-8"); 
  4.   $string = str_replace("\n","",$string); 
  5.   $strlen = mb_strwidth($string); 
  6.   if ($strlen > $length) { 
  7.     $etclen = mb_strwidth($etc); 
  8.     $length = $length - $etclen; 
  9.     $str=''; $n = 0; 
  10.     for($i=0; $i<$length; $i++) { 
  11.       $c = mb_substr($string, $i, 1); 
  12.       $n += mb_strwidth($c); 
  13.       if ($n>$length) { break; } 
  14.       $str .= $c; 
  15.     } 
  16.     return $str.$etc; 
  17.   } else { 
  18.     return $string; 
  19.   } 
  20. } 

echo getStrTruncate("海底苍鹰博客",7); //结果是海底苍,utf8一个汉字对应二个字符

3、多长时间前的时间函数,论坛,博客常用

  1. function timeFromNow($dateline) { 
  2.   if(emptyempty($dateline)) return false; 
  3.   $seconds = time() - $dateline; 
  4.   if ($seconds < 60){ 
  5.     return "1分钟前"; 
  6.   }elseif($seconds < 3600){ 
  7.     return floor($seconds/60)."分钟前"; 
  8.   }elseif($seconds < 24*3600){ 
  9.     return floor($seconds/3600)."小时前"; 
  10.   }elseif($seconds < 48*3600){ 
  11.     return date("昨天 H:i", $dateline).""; 
  12.   }else{ 
  13.     return date('Y-m-d', $dateline); 
  14.   } 
  15. } 
  16. echo timeFromNow(strtotime("2012-07-07 14:15:13")); //昨天 14:15 
  17. echo timeFromNow(strtotime("2012-07-08 14:15:13")); //1小前 

4、过滤部分标签

  1. function delTags($str) 
  2. { 
  3.   $farr = array( 
  4.   "/<(\/?)(script|i?frame|style|html|body|title|link|meta|form|input|embed|object|textarea|\?|\%)([^>]*?)>/isU", 
  5.   "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU" 
  6.   ); 
  7.   $tarr = array( 
  8.   "", 
  9.   "" 
  10.   ); 
  11.   $str = preg_replace( $farr,$tarr,$str); 
  12.   return $str; 
  13. } 
  14. $str = "<a href='#'>asdfasdfsd</a>====<script>alert(1111)</script>"; 
  15. echo delTags($str);  //结果:<a href='#'>asdfasdfsd</a>====alert(1111) 
  16. echo strip_tags($str); //结果:sdfasdfsd====alert(1111) 

如果要过滤所有标签strip_tags就够用了。

 

出处:http://www.phpfensi.com/php/20210707/17070.html

 


相关教程