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 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
其他功能
Oct 09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
PHP下常用正则表达式整理
Oct 26 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
Yii2框架使用计划任务的方法
May 25 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
文件上传程序的全部源码
2006/10/09 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
js实现小星星游戏
2020/03/23 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python实现异步回调机制代码分享
2014/01/10 Python
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
python随机数分布random均匀分布实例
2019/11/27 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
上班早退检讨书
2014/01/09 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
民政局个人整改措施
2014/09/24 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle