几个简单又实用的PHP函数

简单方便使用:
/**
 * 将多维数组转为一维数组
 * @param array $arr
 * @return array
 */
function ArrMd2Ud($arr) {
    #将数值第一元素作为容器,作地址赋值。
    $ar_room = &$arr[key($arr)];
    #第一容器不是数组进去转呀
    if (!is_array($ar_room)) {
        #转为成数组
        $ar_room = array($ar_room);
    }
    #指针下移
    next($arr);
    #遍历
    while (list($k, $v) = each($arr)) {
        #是数组就递归深挖,不是就转成数组
        $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);
        #递归合并
        $ar_room = array_merge_recursive($ar_room, $v);
        #释放当前下标的数组元素
        unset($arr[$k]);
    }
    return $ar_room;
}
/**
 * 日期转换成几分钟前
 */
public function formatTime($date) {
    $timer = strtotime($date);
    $diff = $_SERVER[‘REQUEST_TIME‘] - $timer;
    $day = floor($diff / 86400);
    $free = $diff % 86400;
    if($day > 0) {
        if(15 < $day && $day <30){
            return "半个月前";
        }elseif(30 <= $day && $day <90){
            return "1个月前";
        }elseif(90 <= $day && $day <187){
            return "3个月前";
        }elseif(187 <= $day && $day <365){
            return "半年前";
        }elseif(365 <= $day){
            return "1年前";
        }else{
            return $day."天前";
        }
    }else{
        if($free>0){
            $hour = floor($free / 3600);
            $free = $free % 3600;
            if($hour>0){
                return $hour."小时前";
            }else{
                if($free>0){
                    $min = floor($free / 60);
                    $free = $free % 60;
                if($min>0){
                    return $min."分钟前";
                }else{
                    if($free>0){
                        return $free."秒前";
                    }else{
                        return ‘刚刚‘;
                    }
                }
                }else{
                    return ‘刚刚‘;
                }
            }
        }else{
            return ‘刚刚‘;
        }
    }
}
/**
 * 截取长度
 */
public function getSubString($rawString,$length=‘100‘,$etc = ‘...‘,$isStripTag=true){
    $rawString = str_replace(‘_baidu_page_break_tag_‘, ‘‘, $rawString);
    $result = ‘‘;
    if($isStripTag)
        $string = html_entity_decode(trim(strip_tags($rawString)), ENT_QUOTES, ‘UTF-8‘);
    else
        $string = trim($rawString);
    $strlen = strlen($string);
    for ($i = 0; (($i < $strlen) && ($length > 0)); $i++){
        if ($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, ‘0‘, STR_PAD_LEFT), ‘0‘))
        {
            if ($length < 1.0){
                break;
            }
            $result .= substr($string, $i, $number);
            $length -= 1.0;
            $i += $number - 1;
        }else{
            $result .= substr($string, $i, 1);
            $length -= 0.5;
        }
    }
    if($isStripTag)
        $result = htmlspecialchars($result, ENT_QUOTES, ‘UTF-8‘);

    if ($i < $strlen){
        $result .= $etc;
    }
    return $result;
}
/* * *************************
 * 生成随机字符串,可以自己扩展   //若想唯一,只需在开头加上用户id
 * $type可以为:upper(只生成大写字母),lower(只生成小写字母),number(只生成数字)
 * $len为长度,定义字符串长度
 * mark 2017/8/15
 * ************************** */

function _random($type, $len = 0) {
    $new = ‘‘;
    $string = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘;  //数据池
    if ($type == ‘upper‘) {
        for ($i = 0; $i < $len; $i++) {
            $new .= $string[mt_rand(36, 61)];
        }
        return $new;
    }
    if ($type == ‘lower‘) {
        for ($i = 0; $i < $len; $i++) {
            $new .= $string[mt_rand(10, 35)];
        }
        return $new;
    }
    if ($type == ‘number‘) {
        for ($i = 0; $i < $len; $i++) {
            $new .= $string[mt_rand(0, 9)];
        }
        return $new;
    }
}
//计算该月有几天
function getdaysInmonth($month, $year) {
    $days = ‘‘;
    if ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12)
        $days = 31;
    else if ($month == 4 || $month == 6 || $month == 9 || $month == 11)
        $days = 30;
    else if ($month == 2) {
        if (isLeapyear($year)) {
            $days = 29;
        } else {
            $days = 28;
        }
    }
    return ($days);
}

//判断是否为润年
function isLeapyear($year) {
    if ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0)) {
        return (true);
    } else {
        return (false);
    }
}
//生成订单15位
function auto_order($ord = 0) {
    //自动生成订单号  传入参数为0 或者1   0为本地  1为线上订单
    if ($ord == 0) {
        $str = ‘00‘ . time() . rand(1000, 9999); //00 本地订单
    } else {
        $str = ‘99‘ . time() . rand(1000, 9999);  //11 线上订单
    }
    return $str;
}

//生成订单15位
function auto_new_order($ord = 0) {
    srand(time());
    //自动生成订单号  传入参数为0 或者1   0为本地  1为线上订单
    if ($ord == 0) {
        $str = ‘00‘ . time() . mt_rand(100000,999999); //00 本地订单
    } else {
        $str = ‘11‘ . time() . mt_rand(100000,999999);  //11 线上订单
    }
    return $str;
}
/**
 * 检测是否为UTF8编码
 * @param $string 检测字符串
 * @return bool
 */
function is_utf8($string) {
    return preg_match(‘%^(?:
          [\x09\x0A\x0D\x20-\x7E]            # ASCII
        | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
        |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
        |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
        |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
        |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
    )*$%xs‘, $string);
}
//处理json字符中的特殊字符
function getJsonToArr($result,$return_array=true)
{
        $tempArr = NULL;
        $result = preg_replace(‘/([^\\\])(":)(\d{9,})(,")/i‘, ‘${1}${2}"${3}"${4}‘, $result); //taobao bug,number >2^32
        $tempArr = json_decode($result, $return_array);
        if ($tempArr == NULL) {
            $patterns = array(‘/,+\s*\}/‘, ‘/,+\s*\]/‘, ‘/"\s+|\s+"/‘, ‘/\n|\r|\t/‘,‘/\\\/‘,‘/ss+/‘);
            $replacements = array(‘}‘, ‘]‘, ‘"‘, ‘ ‘,‘‘,‘ ‘);
            $result = preg_replace($patterns, $replacements, $result);
            $tempArr = json_decode($result, $return_array);
        }

        return $tempArr;
}

//非法字符过滤函数
function has_unsafeword($str) {
    $regex = "/\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\.|\/|\;|\‘|\`|\=|\\\|\|/";
    return preg_replace($regex,"",$str);
}

//去空格,以及字符添加斜杠
function _trim(&$value) {
    Return addslashes(trim($value));
}
时间: 2024-10-15 03:20:53

几个简单又实用的PHP函数的相关文章

简单但实用的二分法(一)

二分法,作为一个c的初学者,基本上是都要学的,简述一下二分的思想,比如说给你10个数:1,3, 5, 4, 6, 10, 9, 8, 7, 2.让你查找其中的一个数,比如2,最容易想到的方法就是从第一个数到最后一个数遍历一遍. for(i = 0; i < n; i++) { if(a[i] == m) break; } ......... 但这样是有问题的,如果n的值很大,大到1000000,,10000000,这样就明显不行,会超时.那怎么办呢?这就轮到我们的二分法出场了. 二分法,顾名思义

cad怎么转换成pdf 简单又实用

作为一名技术宅,小编永远在设计CAD图形,每次设计完CAD,都要转换成pdf用email发送给客户,一开始小编被CAD怎么转换成pdf的问题弄得特憋屈,不过现在已经不用担心了,CAD转pdf那是小case,你是不是很想要知道小编是如何完成这两种格式之间的转换的?往下看,带着大家了解:cad怎么转换成pdf 简单又实用.        步骤一,打开任意浏览器,输入迅捷在线pdf转换器,找到该转换的转换网站,点击进入. 步骤二,大家可以在软件顶部菜单栏中查看该在线转换的每一个功能,鼠标放在任意项目上

SpringMVC 理论与实用技术(一) 简单、实用、易懂的几个实例

SpringMVC先来看一下百度百科中的定义; Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架.通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术.Velo

10个不太为人所知的,但实用的PHP函数

10个不太为人所知的,但实用的PHP函数 您的评价:       较差  收藏该经验     阅读目录 php_check_syntax highlight_string show_source php_strip_whitespace __halt_compiler highlight_file ignore_user_abort str_word_count get_defined_vars get_browser PHP拥有非常丰富的内置函数,并且大多数我们是知道的.有许多功能,这些功能不

几个简单的文件&目录操作函数

一,检测目录是否为空 function isEmptyDir($path){ $handle=opendir($path);----打开路径 while (($item=readdir($handle))!==false){----判断文件名不为假 //循环出$item,如果不是.跟..,那么在if条件里就为真,否则为(空)假 if ($item!="."&&$item!=".."){ return false; } } closedir($hand

1.5.2 从简单到实用

启动新项目,开头通常不知道到结束时代码会是什么样子,在这个阶段,代码演变很迅速.但随着项目逐渐成熟,架构更加固定,我们更关心的是解决方案的可靠性,而不是灵活性.有趣的是,这些要求并不会反映在我们所使用的编程语言和工具中:而 F# 在工具和语言两方面都很好地体现这些要求,单从这点来看,F# 就有吸引力. F# 开发过程简介 使用F# 交互式工具,用户能够在编写代码的同时立即进行验证.测试,这个工具在开发的初期非常有用,我们可以用它来尝试不同的方法,并选择最好的一个.此外,当解决一些问题时,对是否是

多项式无疑是最简单,最常见的函数,

插值,不论在数学中的数值分析中,还是在我们实际生产生活中,都不难发现它的身影,比如造船业和飞机制造业中的三次样条曲线.那么,什么是插值呢?我们可以先看一下插值的定义,如下: ??(定义)如果对于每个1≤i≤n,P(xi)=yi1≤i≤n,P(xi)=yi,则称函数y=P(x)y=P(x)插值数据点(x1,y1),...,(xn,yn)(x1,y1),...,(xn,yn). ?? 插值的定义无疑是清楚明了的,而在众多的数学函数中,多项式无疑是最简单,最常见的函数,关于它的理论研究也最为透彻.因此

【转载】手把手教你使用Git(简单,实用)

手把手教你使用Git(简单,实用) 标签: git 2016年04月21日 20:51:45 1328人阅读 评论(0) 收藏 举报 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器.集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够

自建简单又实用的动态域名管理系统

个人动态域名管理系统.Personal-DDNS. 简单又实用的动态域名管理系统, 自建动态域名管理系统 使用 bind9 + php + mysql , 创建个人的动态域名系统. Use bind9 + php + mysql , create a personal ddns server, update by an URL. Only support "A","AAAA","TXT" recorder. 项目地址 https://github