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的FTP学习(一)
Oct 09 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
PHP-redis中文文档介绍
Feb 07 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
PHP中使用BigMap实例
Mar 30 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
分析php://output和php://stdout的区别
May 06 PHP
PHP微信H5支付开发实例
Jul 25 PHP
php原生数据库分页的代码实例
Feb 18 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 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 向访客和爬虫显示不同的内容
2009/11/09 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JavaScript中Function详解
2015/02/27 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
中科方德软件测试面试题
2016/04/21 面试题
消防战士优秀事迹材料
2014/02/13 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
人生遥控器观后感
2015/06/11 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript