最近在看代码,发现以下是几个比较实用的函数。

1,取客户端IP

  1. function getOnlineIp() {
  2. $strOnlineIp = "";
  3. if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
  4. $onlineip = getenv('HTTP_CLIENT_IP');
  5. } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  6. $onlineip = getenv('HTTP_X_FORWARDED_FOR');
  7. } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  8. $onlineip = getenv('REMOTE_ADDR');
  9. } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  10. $onlineip = $_SERVER['REMOTE_ADDR'];
  11. }
  12. preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches);
  13. $strOnlineIp = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
  14. return $strOnlineIp;
  15. }

这里,如果使用多级代理的用户,真实IP是取不到的。

2,字符串截取,支持中文

  1. function getStrTruncate($string, $length = 80, $etc = ''){
  2. if ($length == 0) return '';
  3. mb_internal_encoding("UTF-8");
  4. $string = str_replace("\n","",$string);
  5. $strlen = mb_strwidth($string);
  6. if ($strlen > $length) {
  7. $etclen = mb_strwidth($etc);
  8. $length = $length - $etclen;
  9. $str=''; $n = 0;
  10. for($i=0; $i<$length; $i++) {
  11. $c = mb_substr($string, $i, 1);
  12. $n += mb_strwidth($c);
  13. if ($n>$length) { break; }
  14. $str .= $c;
  15. }
  16. return $str.$etc;
  17. } else {
  18. return $string;
  19. }
  20. }
  21. echo getStrTruncate("海底苍鹰博客",7);  //结果是海底苍,utf8一个汉字对应二个字符

3,多长时间前的时间函数,论坛,博客常用

  1. function timeFromNow($dateline) {
  2. if(emptyempty($dateline)) return false;
  3. $seconds = time() - $dateline;
  4. if ($seconds < 60){
  5. return "1分钟前";
  6. }elseif($seconds < 3600){
  7. return floor($seconds/60)."分钟前";
  8. }elseif($seconds  < 24*3600){
  9. return floor($seconds/3600)."小时前";
  10. }elseif($seconds < 48*3600){
  11. return date("昨天 H:i", $dateline)."";
  12. }else{
  13. return date('Y-m-d', $dateline);
  14. }
  15. }
  16. echo timeFromNow(strtotime("2012-07-07 14:15:13")); //昨天 14:15
  17. echo timeFromNow(strtotime("2012-07-08 14:15:13")); //1小前

4,过滤部分标签

  1. function delTags($str)
  2. {
  3. $farr = array(
  4. "/<(\/?)(script|i?frame|style|html|body|title|link|meta|form|input|embed|object|textarea|\?|\%)([^>]*?)>/isU",
  5. "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU"
  6. );
  7. $tarr = array(
  8. "",
  9. ""
  10. );
  11. $str = preg_replace( $farr,$tarr,$str);
  12. return $str;
  13. }
  14. $str = "<a href='#'>asdfasdfsd</a>====<script>alert(1111)</script>";
  15. echo delTags($str);    //结果:<a href='#'>asdfasdfsd</a>====alert(1111)
  16. echo strip_tags($str); //结果:sdfasdfsd====alert(1111)

如果要过滤所有标签strip_tags就够用了。

php 几个比较实用的函数的更多相关文章

  1. c++函数库中一些实用的函数

    有一些程序,虽然写起来不难,但是可能比较麻烦或容易出错,这时就可以用c++函数库里自带的一些实用的函数. 这里只记录一些不太常见的函数. ------------------------------- ...

  2. JQuery实践--实用工具函数

    实用工具函数,$命名空间的一系列函数,但不操作包装集.它要么操作除DOM元素以外的Javascript对象,要么执行一些非对象相关的操作. JQuery的浏览器检测标志可在任何就绪处理程序执行之前使用 ...

  3. 9 个必须知道的实用 PHP 函数和功能 [转]

    9 个必须知道的实用 PHP 函数和功能 [转] 即使使用 PHP 多年,也会偶然发现一些未曾了解的函数和功能.其中有些是非常有用的,但没有得到充分利用.并不是所有人都会从头到尾一页一页地阅读手册和函 ...

  4. PHP实用系统函数之数组篇

    PHP中十分实用的系统函数 array array_merge 说明:array  array_merge ( array $array1 [, array $... ] ) 将一个或多个数组的单元合 ...

  5. 面向VBA一维数组的实用自定义函数

    UDF.dll包含了一组实用的用户自定义函数,提供了数组处理的快速方法,可以在VB6.VBS.32位VBA中调用. 看完如下的实例代码,就明白它的用处了. Private MyUDF As New U ...

  6. 盘点MySQL中比较实用的函数

    之前小编在工作中遇到一些处理数据的问题,例如完成日期格式化,获取几天后的时间,生成指定格式的编码等问题,这时候小编经常会写一大堆逻辑代码来进行处理,还自己感觉自己很流弊的样子,后来却发现同事遇到相同的 ...

  7. JS脚本收藏(一些实用的函数)

    一.共享onload事件 这个函数的名字是addLoadEvent,它是由Simon Willison 编写的.它只有一个参数:打算在页面加载完毕时执行的函数的名字. 下面是addLoadEvent函 ...

  8. jQuery实用工具函数

    1. 什么是工具函数 在jQuery中,工具函数是指直接依附于jQuery对象.针对jquery对象本身定义的说法,即全局性的函数,我们统称为工具函数,或Utilities函数.它们有一个明显的特征, ...

  9. 实用js函数收集

    1. 全选复选框: //复选框全选函数 function SelectAll() { var checkAll = document.getElementsByName("checkAll& ...

随机推荐

  1. ibatis 优点,未完版

    iBatis是Apache的一个开源项目,一个O/R Mapping(???)解决方案,iBatis最大的特点就是小巧,上手很快,如果不需要太多复杂的功能,ibatis是能满足你得要求又足够灵活的最简 ...

  2. python操作oracle数据库

    本文主要介绍python对oracle数据库的操作学习 包含:oracle数据库在Windows操作系统下的安装和配置.python需要安装的第三方拓展包以及基本操作的样例学习. 1          ...

  3. 「LuoguP1220」 关路灯(区间dp

    题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...

  4. Linux系统启动全过程

    分为两部分,第一部分是硬件本身需要加载的信息,之后才是加载Linux相关信息,因为有装有双系统的机器嘛 1.计算机加电 2.BIOS开始运行,检测硬件:cpu.内存.硬盘等 3.BIOS读取CMOS存 ...

  5. 896C

    ODT/珂朵莉树 原来这个东西很咸鱼,只能数据随机情况下nloglogn,不过作为卡常还是很好的 大概就是维护区间,值相同的并且连续当成一个区间存在set里,每次区间操作强行分裂就行了. 复杂度因为是 ...

  6. 六、mysql语法

    1.条件查询 条件查询需要用到where语句,where必须放到from语句表的后面 执行顺序:先from后where过滤后再检索出来 2.数据排序,asc(升序),desc(降序)默认情况下是asc ...

  7. Windows 下有什么软件能够极大地提高工作效率

    Windows 下有什么软件能够极大地提高工作效率?修改 可以推荐一些好的应用或者有趣的程序,能提升工作效率或者能让人眼前一亮的.修改 举报1 条评论 分享 • 邀请回答   按票数排序按时间排序 2 ...

  8. OnCtlColor

    https://baike.baidu.com/item/OnCtlColor/4750440?fr=aladdin CTLCOLOR_BTN 按钮控件 · CTLCOLOR_DLG 对话框 · CT ...

  9. css3单位em,rem,px,vw,vh等

    昨天发现了个好用的方法去设置手机端的rem单位,在这里记录下. html{ font-size:calc(100vw/7.5);} 这是按照750的设计稿(也就是iphone6的设计稿). 100vw ...

  10. classpath 和 classpath*的 区别:

    classpath 和 classpath*的 区别: classpath:只会到你指定的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径 ...