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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
php定界符
Jun 19 PHP
PHP下载文件的函数实例代码
May 18 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
PHP连接MySQL数据库三种实现方法
Dec 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中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python实现的选择排序算法示例
2017/11/29 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
违反学校规则制度检讨书
2015/01/01 职场文书
2015年化验员工作总结
2015/04/10 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python