首頁 >後端開發 >php教程 >PHP自訂函數的用法

PHP自訂函數的用法

墨辰丷
墨辰丷原創
2018-06-05 12:01:301949瀏覽

本篇主要介紹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(&#39;Y-m-d&#39;, $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=&#39;#&#39;>asdfasdfsd</a>====<script>alert(1111)</script>";
echo delTags($str);  //结果:<a href=&#39;#&#39;>asdfasdfsd</a>====alert(1111)
echo strip_tags($str); //结果:sdfasdfsd====alert(1111)

如果要過濾所有標籤strip_tags就夠用了。

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php實作取得一定範圍內取N個不重複的隨機數的方法

PHP中上傳檔案的處理問題實例詳解

#php實作一段簡單機率的方法

以上是PHP自訂函數的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn