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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
php mysql数据库操作分页类
Jun 04 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
Dec 05 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
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
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
php树型类实例
2014/12/05 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
Python高效编程技巧
2013/01/07 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
如何用Python 加密文件
2020/09/10 Python
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
初中家长意见
2015/06/03 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
百万英镑观后感
2015/06/09 职场文书
十八大观后感
2015/06/12 职场文书
Redis数据同步之redis shake的实现方法
2022/04/21 Redis