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中使用Oracle数据库(2)
Oct 09 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
php中动态修改ini配置
Oct 14 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
php中array_column函数简单实现方法
Jul 11 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
TP5框架请求响应参数实例分析
Oct 17 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 冒泡排序算法的实现代码
2010/08/08 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
php实现的顺序线性表示例
2019/05/04 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
对python中的pop函数和append函数详解
2018/05/04 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
python实现桌面壁纸切换功能
2019/01/21 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
PyTorch-GPU加速实例
2020/06/23 Python
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
医药销售求职信范文
2014/02/01 职场文书
策划创业计划书
2014/02/06 职场文书
银行求职信
2014/05/31 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
写给医生的感谢信
2015/01/22 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
校车安全管理责任书
2015/05/11 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js