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 中使用随机数的三个步骤
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
九步学会Python装饰器
2015/05/09 Python
Python代码实现KNN算法
2017/12/20 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
教师求职自荐书
2014/06/14 职场文书
小学语文教研活动总结
2014/07/01 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
导游词之阆中古城
2019/12/23 职场文书
MySQL 数据表操作
2022/05/04 MySQL