php常用函数封装与收集,持久更新。。。

github地址

    class Func
    {
	     /**
	     * Created by Mr.亮先生.
	     * User: 16956
	     * Date: 2019/7/11
	     * Time: 10:09
	     * @Url:
	     * @param $data
	     * @param $index
	     * @return array
	     */
	    public function Array_index($data,$index){
	        $arr = [];
	        foreach ($data as $key=>$val):
	            $arr[$val[$index]] = $val;
	        endforeach;
	        return $arr;
	    }
        /**
         * @param $lat1 纬度1
         * @param $lng1 经度1
         * @param $lat2 纬度2
         * @param $lng2 经度2
         * @param int $len_type 输出类型(m?km)
         * @param int $decimal 保留小数位
         * @return float
         */
        public static function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 2, $decimal = 2)
        {
            $radLat1 = $lat1 * M_PI / 180.0;
            $radLat2 = $lat2 * M_PI / 180.0;
            $a = $radLat1 - $radLat2;
            $b = ($lng1 * M_PI / 180.0) - ($lng2 * M_PI / 180.0);
            $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
            $s = $s * 6378.137;
            $s = round($s * 1000);
            if ($len_type > 1) {
                $s /= 1000;
            }
            return round($s, $decimal);
        }
    
        /**
         * [加密解密函数]
         * Created by PhpStorm.
         * User: 王亮亮
         * Date: 2018/7/25
         * Time: 11:29
         * @E-mial:xmrwll@gmail.com
         * @web:https://blog.csdn.net/pariese
         * @param $key
         * @param $string
         * @param $decrypt
         * @return string
         */
        function encryptDecrypt($key, $string, $decrypt)
        {
            if ($decrypt) {
                $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");
                return $decrypted;
            } else {
                $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
                return $encrypted;
            }
    
        }
    
        /**
         * [生成唯一字符串]
         * @E-mial 1695699447@qq.com
         * @TIME   2018-06-06
         * @WEB    https://blog.csdn.net/pariese
         * @ 0-存数字字符串;1-小写字母字符串;2-大写字母字符串;3-大小写数字字符串;4-字符;
         *   5-数字,小写,大写,字符混合
         * @param integer $type [字符串的类型]
         * @param integer $length [字符串的长度]
         * @param integer $time [是否带时间1-带,0-不带]
         * @return [string]  $str    [返回唯一字符串]
         */
        function randSole($type = 0, $length = 18, $time = 1)
        {
            $str = $time == 0 ? '' : date('YmdHis', time());
            switch ($type) {
                case 0:
                    for ((int)$i = 0; $i <= $length; $i++) {
                        if (mb_strlen($str) == $length) {
                            $str = $str;
                        } else {
                            $str .= rand(0, 9);
                        }
                    }
                    break;
                case 1:
                    for ((int)$i = 0; $i <= $length; $i++) {
                        if (mb_strlen($str) == $length) {
                            $str = $str;
                        } else {
                            $rand = "qwertyuioplkjhgfdsazxcvbnm";
                            $str .= $rand{mt_rand(0, 26)};
                        }
                    }
                    break;
                case 2:
                    for ((int)$i = 0; $i <= $length; $i++) {
                        if (mb_strlen($str) == $length) {
                            $str = $str;
                        } else {
                            $rand = "QWERTYUIOPLKJHGFDSAZXCVBNM";
                            $str .= $rand{mt_rand(0, 26)};
                        }
                    }
                    break;
                case 3:
                    for ((int)$i = 0; $i <= $length; $i++) {
                        if (mb_strlen($str) == $length) {
                            $str = $str;
                        } else {
                            $rand = "123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";
                            $str .= $rand{mt_rand(0, 35)};
                        }
                    }
                    break;
                case 4:
                    for ((int)$i = 0; $i <= $length; $i++) {
                        if (mb_strlen($str) == $length) {
                            $str = $str;
                        } else {
                            $rand = "!@#$%^&*()_+=-~`";
                            $str .= $rand{mt_rand(0, 17)};
                        }
                    }
                    break;
                case 5:
                    for ((int)$i = 0; $i <= $length; $i++) {
                        if (mb_strlen($str) == $length) {
                            $str = $str;
                        } else {
                            $rand = "123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_+=-~`";
                            $str .= $rand{mt_rand(0, 52)};
                        }
                    }
                    break;
            }
            return $str;
        }
    
        /**
         * [生成字符串]
         * Created by PhpStorm.
         * User: 王亮亮
         * Date: 2018/7/25
         * Time: 11:31
         * @E-mial:xmrwll@gmail.com
         * @web:https://blog.csdn.net/pariese
         * @param int $length
         * @return string
         */
        function generateRandomString($length = 10)
        {
            $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
            $randomString = '';
            for ($i = 0; $i < $length; $i++) {
                $randomString .= $characters[rand(0, strlen($characters) - 1)];
            }
            return $randomString;
    
        }
    
        /**
         * [PHP获取文件扩展名(后缀)]
         * Created by PhpStorm.
         * User: 王亮亮
         * Date: 2018/7/25
         * Time: 11:32
         * @E-mial:xmrwll@gmail.com
         * @web:https://blog.csdn.net/pariese
         * @param $filename
         * @return mixed
         */
        function getExtension($filename)
        {
            $myext = substr($filename, strrpos($filename, '.'));
            return str_replace('.', '', $myext);
    
        }
    
        /**
         * [获取ip]
         * Created by PhpStorm.
         * User: 王亮亮
         * Date: 2018/7/25
         * Time: 13:41
         * @E-mial:xmrwll@gmail.com
         * @web:https://blog.csdn.net/pariese
         * @return array|false|string
         */
        function getIp()
        {
            if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
                $ip = getenv("HTTP_CLIENT_IP");
            else
                if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
                    $ip = getenv("HTTP_X_FORWARDED_FOR");
                else
                    if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                        $ip = getenv("REMOTE_ADDR");
                    else
                        if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                            $ip = $_SERVER['REMOTE_ADDR'];
                        else
                            $ip = "unknown";
            return ($ip);
        }
    
        /**
         * [处理倒计时]
         * Created by PhpStorm.
         * User: 王亮亮
         * Date: 2018/7/25
         * Time: 13:43
         * @E-mial:xmrwll@gmail.com
         * @web:https://blog.csdn.net/pariese
         * @param $seconds
         * @return string
         */
        function changeTimeType($seconds)
        {
            if ($seconds > 3600) {
                $hours = intval($seconds / 3600);
                $minutes = $seconds % 3600;
                $time = $hours . ":" . gmstrftime('%M:%S', $minutes);
            } else {
                $time = gmstrftime('%H:%M:%S', $seconds);
            }
            return $time;
        }
    
        /**
         * 去除合同富文本标签
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:45
         * @Url:
         * @param $data
         * @return string
         */
        public static function format($data)
        {
            $content_01 = $data;//从数据库获取富文本content
            $content_02 = htmlspecialchars_decode($content_01);//把一些预定义的 HTML 实体转换为字符
            $content_03 = str_replace("&nbsp;", "", $content_02);//将空格替换成空
            $content_04 = str_replace("</p>", "</p>\n", $content_03);
            $contents = strip_tags($content_04);//函数剥去字符串中的 HTML、XML 以及 PHP 的标签,获取纯文本内容
            return $contents;
        }
    
        /**
         * 输出函数根据类型
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:46
         * @Url:
         * @param $arr
         */
        public function P($arr)
        {
            if (is_array($arr) || is_object($arr)) {
                echo "<pre/>";
                print_r($arr);
            } else if (is_string($arr)) {
                echo $arr . "<br/>";
            }
        }
    
        /**
         * 数组转对象
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:47
         * @Url:
         * @param $arr
         * @return object|void
         */
        public function array2object($arr)
        {
            if (!is_array($arr)) return;
            foreach ($arr as $k => $v) {
                if (is_array($v) || is_object($v))
                    $arr[$k] = (object)self::array2object($v);
            }
            return (object)$arr;
        }
    
        /**
         * 对象转数组
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:48
         * @Url:
         * @param $obj
         * @return array|void
         */
        public function object2array($obj)
        {
            $obj = (array)$obj;
            foreach ($obj as $k => $v) {
                if (is_resource($v)) return;
                if (is_object($v) || is_array($v))
                    $obj[$k] = (array)self::object2array($v);
            }
            return $obj;
        }
    
        /**
         * get请求
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:48
         * @Url:
         * @param $url
         * @return bool|string
         */
        public function httpGet($url)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            $res = "";
            $res = curl_exec($ch);
            curl_close($ch);
            return $res;
        }
    
        /**
         * post请求
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:48
         * @Url:
         * @param $url
         * @param array $query
         * @param array $header
         * @return bool|string
         */
        public function httpPost($url, $query = array(), $header = array("Content-Type" => "application/x-www-form-urlencoded"))
        {
            $ch = curl_init();
            $query = http_build_query($query);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_SSLVERSION, 1);
            $ret = curl_exec($ch);
            curl_close($ch);
            return $ret;
        }
    
        /**
         * 得到微秒
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:52
         * @Url:
         * @return float
         */
        function microtime_float()
        {
            list($usec, $sec) = explode(" ", microtime());
            return ((float)$usec + (float)$sec);
        }
    
        /**
         * 多维数组排序
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:53
         * @Url:
         * @param $arr
         * @param $key
         * @param int $sort_order
         * @param int $sort_type
         * @return mixed
         */
        function arrayMultiSort($arr, $key, $sort_order = SORT_DESC, $sort_type = SORT_NUMERIC)
        {
            if (is_array($arr)) {
                foreach ($arr as $array) {
                    if (is_array($array)) {
                        $key_arrays[] = $array[$key];
                    }
                }
                array_multisort($key_arrays, $sort_order, $sort_type, $arr);
            }
            return $arr;
        }
    
        /**
         * 数组转xml
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:56
         * @Url:
         * @param $arr
         * @return string
         */
        function arrayToXml($arr)
        {
            $xml = "<xml>";
            foreach ($arr as $key => $val) {
                if (is_numeric($val)) {
                    $xml .= "<" . $key . ">" . $val . "</" . $key . ">";
    
                } else
                    $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
            }
            $xml .= "</xml>";
            return $xml;
        }
    
        /**
         * 将XML转为array
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:56
         * @Url:
         * @param $xml
         * @return mixed
         */
        function xmlToArray($xml)
        {
            //将XML转为array
            $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
            return $array_data;
    
        }
    
        /**
         * 获取汉字首字母
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 16:57
         * @Url:
         * @param $s0
         * @return string|null
         */
        function getfirstchar($s0)
        {
            $fchar = ord($s0{0});
            if ($fchar >= ord("A") and $fchar <= ord("z")) return strtoupper($s0{0});
            $s1 = iconv("UTF-8", "gb2312", $s0);
            $s2 = iconv("gb2312", "UTF-8", $s1);
            if ($s2 == $s0) {
                $s = $s1;
            } else {
                $s = $s0;
            }
            $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
            if ($asc >= -20319 and $asc <= -20284) return "A";
            if ($asc >= -20283 and $asc <= -19776) return "B";
            if ($asc >= -19775 and $asc <= -19219) return "C";
            if ($asc >= -19218 and $asc <= -18711) return "D";
            if ($asc >= -18710 and $asc <= -18527) return "E";
            if ($asc >= -18526 and $asc <= -18240) return "F";
            if ($asc >= -18239 and $asc <= -17923) return "G";
            if ($asc >= -17922 and $asc <= -17418) return "I";
            if ($asc >= -17417 and $asc <= -16475) return "J";
            if ($asc >= -16474 and $asc <= -16213) return "K";
            if ($asc >= -16212 and $asc <= -15641) return "L";
            if ($asc >= -15640 and $asc <= -15166) return "M";
            if ($asc >= -15165 and $asc <= -14923) return "N";
            if ($asc >= -14922 and $asc <= -14915) return "O";
            if ($asc >= -14914 and $asc <= -14631) return "P";
            if ($asc >= -14630 and $asc <= -14150) return "Q";
            if ($asc >= -14149 and $asc <= -14091) return "R";
            if ($asc >= -14090 and $asc <= -13319) return "S";
            if ($asc >= -13318 and $asc <= -12839) return "T";
            if ($asc >= -12838 and $asc <= -12557) return "W";
            if ($asc >= -12556 and $asc <= -11848) return "X";
            if ($asc >= -11847 and $asc <= -11056) return "Y";
            if ($asc >= -11055 and $asc <= -10247) return "Z";
            return null;
        }
    
        /**
         * 格式化数量
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 17:00
         * @Url:
         * @param $count
         * @param string $delimiter
         * @return float|int|string
         */
        function formatCount($count, $delimiter = '')
        {
            if ($count < 1000) return $count;
            $count = $count / 1000;
            $units = array('千+', '万+', '十万+', '百万+', '千万+');
    
            for ($i = 0; $count >= 10 && $i < 5; $i++) $count /= 10;
    
            return round($count, 2) . $delimiter . $units[$i];
        }
    
        /**
         * 时间展示
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 17:06
         * @Url:
         * @param $sTime
         * @param string $type
         * @param string $alt
         * @return false|string
         */
        function friendly_date($sTime, $type = 'normal', $alt = 'false')
        {
            if (!$sTime) return '';
            //sTime=源时间,cTime=当前时间,dTime=时间差
    
            $cTime = time();
            $dTime = $cTime - $sTime;
            $dDay = intval(date("z", $cTime)) - intval(date("z", $sTime));
            $dYear = intval(date("Y", $cTime)) - intval(date("Y", $sTime));
    
            //normal:n秒前,n分钟前,n小时前,日期
            switch ($type) {
                case 'normal':
                    if ($dTime < 60) {
                        if ($dTime < 10) {
                            return '刚刚';
                        } else {
                            return intval(floor($dTime / 10) * 10) . "秒前";
                        }
                    } elseif ($dTime < 3600) {
                        return intval($dTime / 60) . "分钟前";
                        //今天的数据.年份相同.日期相同.
                    } elseif ($dYear == 0 && $dDay == 0) {
                        //return intval($dTime/3600)."小时前";
                        return '今天' . date('H:i', $sTime);
                    } elseif ($dYear == 0) {
                        return date("m月d日 H:i", $sTime);
                    } else {
                        return date("Y-m-d H:i", $sTime);
                    }
                    break;
                case 'mohu':
                    if ($dTime < 60) {
                        return $dTime . "秒前";
                    } elseif ($dTime < 3600) {
                        return intval($dTime / 60) . "分钟前";
                    } elseif ($dTime >= 3600 && $dDay == 0) {
                        return intval($dTime / 3600) . "小时前";
                    } elseif ($dDay > 0 && $dDay <= 7) {
                        return intval($dDay) . "天前";
                    } elseif ($dDay > 7 && $dDay <= 30) {
                        return intval($dDay / 7) . '周前';
                    } elseif ($dDay > 30) {
                        return intval($dDay / 30) . '个月前';
                    }
                    break;
                case 'full':
                    return date("Y-m-d , H:i:s", $sTime);
                    break;
                case 'ymd':
                    return date("Y-m-d", $sTime);
                    break;
                default:
                    if ($dTime < 60) {
                        return $dTime . "秒前";
                    } elseif ($dTime < 3600) {
                        return intval($dTime / 60) . "分钟前";
                    } elseif ($dTime >= 3600 && $dDay == 0) {
                        return intval($dTime / 3600) . "小时前";
                    } elseif ($dYear == 0) {
                        return date("Y-m-d H:i:s", $sTime);
                    } else {
                        return date("Y-m-d H:i:s", $sTime);
                    }
                    break;
            }
    
        }
    
        /**
         * 计算时间差值
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 17:07
         * @Url:
         * @param $begin_time
         * @param $end_time
         * @return string
         */
        function getTimeDiff($begin_time, $end_time)
        {
            if ($begin_time < $end_time) {
                $starttime = $begin_time;
                $endtime = $end_time;
            } else {
                $starttime = $end_time;
                $endtime = $begin_time;
            }
            $timediff = $endtime - $starttime;
            $days = intval($timediff / 86400);
            $remain = $timediff % 86400;
            $hours = intval($remain / 3600);
            $remain = $remain % 3600;
            $mins = intval($remain / 60);
            $secs = $remain % 60;
            return $days . '天' . $hours . '小时' . $mins . '分';
        }
    
        /**
         * 邮箱验证
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 17:17
         * @Url:
         * @param $email
         * @return bool
         */
        function is_email($email)
        {
            return strlen($email)>8&&preg_match("/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i",$email);
        }
    
        /**
         * 手机验证
         * Created by Mr.亮先生.
         * User: 16956
         * Date: 2019/7/9
         * Time: 17:18
         * @Url:
         * @param $phone
         * @return bool
         */
        function is_phone($phone)
        {
            return strlen(trim($phone))==11&&preg_match("/^1[3|5|8][0-9]{9}$/i",trim($phone));
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值