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 年龄计算函数(精确到天)
Jun 07 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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 8小时时间差的解决方法小结
2009/12/22 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
JavaScript 的继承
2011/10/01 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
ionic3 懒加载
2017/08/16 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python类的继承和多态代码详解
2017/12/27 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python实现图像拼接
2020/03/05 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
2014年科技工作总结
2014/11/26 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
惊天动地观后感
2015/06/10 职场文书
Django框架模板用法详解
2022/06/10 Python