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 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 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/02/22 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
php内存缓存实现方法
2015/01/24 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
node.js实现快速截图
2016/08/27 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
Python实现的数据结构与算法之链表详解
2015/04/22 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Django的models模型的具体使用
2019/07/15 Python
通过cmd进入python的步骤
2020/06/16 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
打造高效课堂实施方案
2014/03/22 职场文书
党支部综合考察材料
2014/05/19 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
嘉宾邀请函
2015/01/31 职场文书
寒假致家长的一封信
2015/10/10 职场文书
详解Redis瘦身指南
2021/05/26 Redis
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle