php常用函數封裝與收集,持久更新。。。

class Func
{
    /**
     * @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:[email protected]
     * @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 [email protected]
     * @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:[email protected]
     * @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:[email protected]
     * @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:[email protected]
     * @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:[email protected]
     * @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));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章