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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
php xml-rpc远程调用
Dec 19 PHP
php header示例代码(推荐)
Sep 08 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
php中static和const关键字用法分析
Dec 07 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
Python动态加载模块的3种方法
2014/11/22 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
Python中按键来获取指定的值
2019/03/02 Python
python lxml中etree的简单应用
2019/05/10 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Python实现数字的格式化输出
2020/08/01 Python
python中四舍五入的正确打开方式
2021/01/18 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
大学四年个人自我小结
2014/03/05 职场文书
新党章心得体会
2014/09/04 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
Golang二维切片初始化的实现
2021/04/08 Golang