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 相关文章推荐
如何将数据从文本导入到mysql
Oct 09 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
ie focus bug 解决方法
2009/09/03 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
Python实现视频下载功能
2017/03/14 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
详解python-图像处理(映射变换)
2019/03/22 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
销售人员职业生涯规划范文
2014/03/01 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
道德之星事迹材料
2014/05/03 职场文书
励志演讲稿600字
2014/08/21 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
感恩父母主题班会
2015/08/12 职场文书
 python中的元类metaclass详情
2022/05/30 Python