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


Posted in PHP onJanuary 25, 2016

本文实例总结了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就够用了。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
十天学会php(3)
Oct 09 PHP
php 前一天或后一天的日期
Jun 28 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
php解析非标准json、非规范json的方式实例
May 10 PHP
php代码架构的八点注意事项
Jan 25 #PHP
详解js异步文件加载器
Jan 24 #PHP
PHP导出Excel实例讲解
Jan 24 #PHP
PHP验证码生成原理和实现
Jan 24 #PHP
详解PHP对象的串行化与反串行化
Jan 24 #PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 #PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 #PHP
You might like
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
js实现拖拽效果
2015/02/12 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
详解Python中with语句的用法
2015/04/15 Python
Django中使用group_by的方法
2015/05/26 Python
Python文件及目录操作实例详解
2015/06/04 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python3.4解释器用法简单示例
2019/03/22 Python
jupyter notebook实现显示行号
2020/04/13 Python
Python的in,is和id函数代码实例
2020/04/18 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
应付会计岗位职责
2013/12/12 职场文书
创业资金计划书
2014/02/06 职场文书
小学生安全责任书
2014/07/25 职场文书
志愿者工作心得体会
2016/01/15 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python