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程序员编程注意事项
Apr 10 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
php中的比较运算符详解
Oct 28 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php中socket的用法详解
Oct 24 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
php字符串函数学习之strstr()
Mar 27 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
学习PHP Cookie处理函数
Aug 09 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
js的表单操作 简单计算器
2011/12/29 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
Python中decorator使用实例
2015/04/14 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
浅析Python中的for 循环
2016/06/09 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
tornado 多进程模式解析
2018/01/15 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
幼儿园教师教学反思
2014/02/06 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
中学清明节活动总结
2014/07/04 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
决心书格式及范文
2019/06/24 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript