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个人网站架设连环讲(二)
Oct 09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
PHP查询网站的PR值
Oct 30 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php简单实现无限分类树形列表的方法
Mar 27 PHP
php常用表单验证类用法实例
Jun 18 PHP
php实现Session存储到Redis
Nov 11 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 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漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
php微信开发之谷歌测距
2018/06/14 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
怎么清空javascript数组
2013/05/11 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
nodejs基础知识
2017/02/03 NodeJs
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
详解Python循环作用域与闭包
2019/03/21 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Python netmiko模块的使用
2020/02/14 Python
python识别验证码图片实例详解
2020/02/17 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
安全标兵事迹材料
2014/08/17 职场文书
大一学生个人总结
2015/02/15 职场文书
审美与表现自我评价
2015/03/09 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript