加入收藏 | 设为首页 | 会员中心 | 我要投稿 马鞍山站长网 (https://www.0555zz.cn/)- 媒体处理、内容创作、云渲染、网络安全、业务安全!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP几个实用自定义函数归纳

发布时间:2023-10-20 12:59:21 所属栏目: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就够用了。

(编辑:马鞍山站长网)

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

    推荐文章