`
moqiang02
  • 浏览: 529955 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

php 几个比较实用的函数

 
阅读更多

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

1,取客户端IP

  1. functiongetOnlineIp(){
  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. functiongetStrTruncate($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. }
  21. echogetStrTruncate("海底苍鹰博客",7);//结果是海底苍,utf8一个汉字对应二个字符

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

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

4,过滤部分标签

  1. functiondelTags($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="<ahref='#'>asdfasdfsd</a>====<script>alert(1111)</script>";
  15. echodelTags($str);//结果:<ahref='#'>asdfasdfsd</a>====alert(1111)
  16. echostrip_tags($str);//结果:sdfasdfsd====alert(1111)

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics