加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP几个实用自定义函数小结

发布时间:2022-08-03 10:15:01 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP几个实用自定义函数,结合实例总结分析了PHP网络操作、字符串操作、时间操作及正则表达式使用等技巧,需要的朋友可以参考下。 本文实例总结了PHP几个实用自定义函数,分享给大家供大家参考,具体如下: 最近在看代码,发现以下是几个比较
  这篇文章主要介绍了PHP几个实用自定义函数,结合实例总结分析了PHP网络操作、字符串操作、时间操作及正则表达式使用等技巧,需要的朋友可以参考下。
 
  本文实例总结了PHP几个实用自定义函数,分享给大家供大家参考,具体如下:
 
  最近在看代码,发现以下是几个比较实用的函数。
 
  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;
  }
  这里,如果使用多级代理的用户,真实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); //结果是海底苍,utf8一个汉字对应二个字符
 
  3、多长时间前的时间函数,论坛,博客常用
 
  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、过滤部分标签
 
  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);  //结果:<a href='#'>asdfasdfsd</a>====alert(1111)
  echo strip_tags($str); //结果:sdfasdfsd====alert(1111)
  如果要过滤所有标签strip_tags就够用了。

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读