• 项目里面常用方法


    /**
     * 判断AJAX
     */
    function isAjax() {
        if ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') && !isset($_GET['ajax'])) {
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * 判断GET
     */
    function isGet() {
        if ($_SERVER['REQUEST_METHOD'] == 'GET') {
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * 判断POST
     */
    function isPost() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * 判断微信访问
     * @return bool
     */
    function isWechat() {
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
            return true;
        }
    
        return false;
    }
    
    /**
     * 判断APP访问
     * @return bool
     */
    function isApp() {
        if ($_SERVER['HTTP_FROM'] == 'app') {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 数据签名
     * @param $data
     * @return mixed
     */
    function data_sign($data) {
        $config = Config::get('dux.use');
        if (!is_array($data)) {
            $data = [
                'data' => $data
            ];
        }
        ksort($data);
        return base64_encode(hash_hmac('sha1', http_build_query($data), $config['safe_key'], true));
    }
    
    /**
     * 验证签名
     * @param $data
     * @param string $sign
     * @return bool
     */
    function data_sign_has($data, $sign = '') {
        if(empty($sign)) {
            return false;
        }
        if (!is_array($data)) {
            $data = [
                'data' => $data
            ];
        }
        $sign = base64_decode($sign);
        ksort($data);
        $config = Config::get('dux.use');
        $valToken = hash_hmac('sha1', http_build_query($data), $config['safe_key'], true);
        return ($sign == $valToken);
    }
    /**
     * 时间格式化
     * @param $time
     * @return string
     */
    function date_tran($time) {
        $agoTime = (int)$time;
    
        // 计算出当前日期时间到之前的日期时间的毫秒数,以便进行下一步的计算
        $time = time() - $agoTime;
    
        if ($time >= 31104000) { // N年前
            $num = (int)($time / 31104000);
    
            return $num . '年前';
        }
        if ($time >= 2592000) { // N月前
            $num = (int)($time / 2592000);
    
            return $num . '月前';
        }
        if ($time >= 86400) { // N天前
            $num = (int)($time / 86400);
    
            return $num . '天前';
        }
        if ($time >= 3600) { // N小时前
            $num = (int)($time / 3600);
    
            return $num . '小时前';
        }
        if ($time > 60) { // N分钟前
            $num = (int)($time / 60);
    
            return $num . '分钟前';
        }
    
        return '刚刚';
    }
     /**
         * 判断UTF-8
         * @param  string $string 字符串
         * @return boolean
         */
        public static function isUtf8($string) {
            if (!empty($string)) {
                $ret = json_encode(['code' => $string]);
                if ($ret == '{"code":null}') {
                    return false;
                }
            }
    
            return true;
        }
    
        /**
         * 转义html
         * @param $str
         * @return string
         */
        public static function htmlIn($str) {
            if (function_exists('htmlspecialchars')) {
                $str = htmlspecialchars($str);
            } else {
                $str = htmlentities($str);
            }
            $str = addslashes($str);
    
            return $str;
        }
    
        /**
         * html代码还原
         * @param $str
         * @return string
         */
        public static function htmlOut($str) {
            if (function_exists('htmlspecialchars_decode')) {
                $str = htmlspecialchars_decode($str);
            } else {
                $str = html_entity_decode($str);
            }
            $str = stripslashes($str);
    
            return $str;
        }
    
        /**
         * html代码清理
         * @param $str
         * @return string
         */
        public static function htmlClear($str) {
            $str = self::htmlOut($str);
            $xss = new duxvendorHtmlCleaner();
    
            return $xss->remove($str);
        }
    
        /**
         * 符号过滤
         * @param $text
         * @return string
         */
        public static function symbolClear($text) {
            if (trim($text) == '') return '';
            $text = preg_replace("/[[:punct:]s]/", ' ', $text);
            $text = urlencode($text);
            $text = preg_replace("/(%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99|%EF%BD%9E|%EF%BC%8E|%EF%BC%88)+/", ' ', $text);
            $text = urldecode($text);
    
            return trim($text);
        }
    
        /**
         * 随机字符串
         * @param int $length
         * @return string
         */
        public static function randStr($length = 5) {
            $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
            $key = '';
            for ($i = 0; $i < $length; $i++) {
                $key .= $pattern{mt_rand(0, 35)};
            }
    
            return $key;
        }
    
    /**
     * 格式化为数字(忽略限制)
     * @param $str
     * @return int|mixed
     */
    public static function intFormat($str) {
            $str = preg_replace('/[^-d]*(-?d*).*/', '$1', $str);
            return $str ? $str : 0;
    }  
    /**
     * 价格格式化不带千分位
     * @param $money
     * @return string
     */
    public static function priceFormat($str) {
            if (empty($str)) {
                return $str = 0;
            }
    
            return @number_format($str, 2, ".", "");
    }
    /**
         * CURL POST数据
         * @param  string  $url       发送地址
         * @param  array   $post_data 发送数组
         * @param  integer $timeout   超时秒
         * @param  string  $header    头信息
         * @return string
         */
        static public function curlPost($url, $post_data=array(), $timeout=5,$header="") {
            $header=empty($header)?'':$header;
            $post_string = http_build_query($post_data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_HOST']);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));//模拟的header头
            $result = curl_exec($ch);
            curl_close($ch);
            return $result;
    }
    /**
         * CURL POST数据
         * @param  string  $url       发送地址
         * @param  array   $post_data 发送数组
         * @param  integer $timeout   超时秒
         * @param  string  $header    头信息
         * @return string
         */
        static public function curlPost($url, $post_data=array(), $timeout=5,$header="") {
            $header=empty($header)?'':$header;
            $post_string = http_build_query($post_data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_HOST']);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));//模拟的header头
            $result = curl_exec($ch);
            curl_close($ch);
            return $result;
    }
    /**
         * 获取客户端系统语言
         * @access public
         * @static true
         * @return string
         */
        public static function getUserLang() {
            return htmlspecialchars($_SERVER['HTTP_ACCEPT_LANGUAGE']);
        }
    
        /**
         * 获取客户端IP
         *
         * @access public
         * @return string
         */
        public static function getUserIp() {
            return htmlspecialchars($_SERVER['REMOTE_ADDR']);
        }
    
        /**
         * 获取当前页面的url来源
         *
         * @access public
         * @return string
         */
        public static function getUrlSource() {
            return htmlspecialchars($_SERVER['HTTP_REFERER']);
        }
    
        /**
         * 获取客户端浏览器信息.
         *
         * @access public
         * @return string
         */
        public static function getUserAgent() {
            return htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
        }
    
        /**
         * 获取客户端浏览器信息
         *
         * @access public
         * @return string
         */
        public static function getUserBrowser() {
            $userAgentInfo = htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
    
            if (strpos($userAgentInfo, 'MSIE 9.0')) {
                return 'IE9';
            } else if (strpos($userAgentInfo, 'MSIE 8.0')) {
                return 'IE8';
            } else if (strpos($userAgentInfo, 'MSIE 7.0')) {
                return 'IE7';
            } else if (strpos($userAgentInfo, 'MSIE 6.0')) {
                return 'IE6';
            } else if (strpos($userAgentInfo, 'Firefox')) {
                return 'Firfox';
            } else if (strpos($userAgentInfo, 'Chrome')) {
                return 'Chrome';
            } else if (strpos($userAgentInfo, 'Opera')) {
                return 'Opera';
            } else if (strpos($userAgentInfo, 'Safari')) {
                return 'Safari';
            } else if (strpos($userAgentInfo, 'Elinks')) {
                return 'Elinks';
            } else if (strpos($userAgentInfo, 'OmniWeb')) {
                return 'OmniWeb';
            } else if (strpos($userAgentInfo, 'Links')) {
                return 'Links';
            } else if (strpos($userAgentInfo, 'Lynx')) {
                return 'Lynx';
            } else if (strpos($userAgentInfo, 'Arora')) {
                return 'Arora';
            } else if (strpos($userAgentInfo, 'Epiphany')) {
                return 'Epiphany';
            } else if (strpos($userAgentInfo, 'Konqueror')) {
                return 'Konqueror';
            } else if (strpos($userAgentInfo, 'EudoraWeb')) {
                return 'EudoraWeb';
            } else if (strpos($userAgentInfo, 'Minimo')) {
                return 'Minimo';
            } else if (strpos($userAgentInfo, 'NetFront')) {
                return 'NetFront';
            } else if (strpos($userAgentInfo, 'POLARIS')) {
                return 'Polaris';
            } else if (strpos($userAgentInfo, 'BlackBerry')) {
                return 'BlackBerry';
            } else if (strpos($userAgentInfo, 'Nokia')) {
                return 'Nokia';
            } else {
                return 'Others';
            }
        }
    
        /**
         * 获取客户端操作系统信息     *
         * @access public
         * @return string
         */
        public static function getUserOs() {
            $userAgentInfo = htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
            if (strpos($userAgentInfo, 'Windows NT 6.1')) {
                return 'Windows 7';
            } else if (strpos($userAgentInfo, 'Windows NT 6.0')) {
                return 'Windows Vista';
            } else if (strpos($userAgentInfo, 'Windows NT 5.2')) {
                return 'Windows 2003';
            } else if (strpos($userAgentInfo, 'Windows NT 5.1')) {
                return 'Windows XP';
            } else if (strpos($userAgentInfo, 'Windows NT 5.0')) {
                return 'Windows 2000';
            } else if (strpos($userAgentInfo, 'Windows ME')) {
                return 'Windows ME';
            } else if (strpos($userAgentInfo, 'PPC Mac OS X')) {
                return 'OS X PPC';
            } else if (strpos($userAgentInfo, 'Intel Mac OS X')) {
                return 'OS X Intel';
            } else if (strpos($userAgentInfo, 'Win98')) {
                return 'Windows 98';
            } else if (strpos($userAgentInfo, 'Win95')) {
                return 'Windows 95';
            } else if (strpos($userAgentInfo, 'WinNT4.0')) {
                return 'Windows NT4.0';
            } else if (strpos($userAgentInfo, 'Mac OS X Mach-O')) {
                return 'OS X Mach';
            } else if (strpos($userAgentInfo, 'Ubuntu')) {
                return 'Ubuntu';
            } else if (strpos($userAgentInfo, 'Debian')) {
                return 'Debian';
            } else if (strpos($userAgentInfo, 'AppleWebKit')) {
                return 'WebKit';
            } else if (strpos($userAgentInfo, 'Mint/8')) {
                return 'Mint 8';
            } else if (strpos($userAgentInfo, 'Minefield')) {
                return 'Minefield Alpha';
            } else if (strpos($userAgentInfo, 'gentoo')) {
                return 'Gentoo';
            } else if (strpos($userAgentInfo, 'Kubuntu')) {
                return 'Kubuntu';
            } else if (strpos($userAgentInfo, 'Slackware/13.0')) {
                return 'Slackware 13';
            } else if (strpos($userAgentInfo, 'Fedora')) {
                return 'Fedora';
            } else if (strpos($userAgentInfo, 'FreeBSD')) {
                return 'FreeBSD';
            } else if (strpos($userAgentInfo, 'SunOS')) {
                return 'SunOS';
            } else if (strpos($userAgentInfo, 'OpenBSD')) {
                return 'OpenBSD';
            } else if (strpos($userAgentInfo, 'NetBSD')) {
                return 'NetBSD';
            } else if (strpos($userAgentInfo, 'DragonFly')) {
                return 'DragonFly';
            } else if (strpos($userAgentInfo, 'IRIX')) {
                return 'IRIX';
            } else if (strpos($userAgentInfo, 'Windows CE')) {
                return 'Windows CE';
            } else if (strpos($userAgentInfo, 'PalmOS')) {
                return 'PalmOS';
            } else if (strpos($userAgentInfo, 'Linux')) {
                return 'Linux';
            } else if (strpos($userAgentInfo, 'DragonFly')) {
                return 'DragonFly';
            } else if (strpos($userAgentInfo, 'Android')) {
                return 'Android';
            } else if (strpos($userAgentInfo, 'Mac OS X')) {
                return 'Mac OS X';
            } else if (strpos($userAgentInfo, 'iPhone')) {
                return 'iPhone OS';
            } else if (strpos($userAgentInfo, 'Symbian OS')) {
                return 'Symbian';
            } else if (strpos($userAgentInfo, 'Symbian OS')) {
                return 'Symbian';
            } else if (strpos($userAgentInfo, 'SymbianOS')) {
                return 'SymbianOS';
            } else if (strpos($userAgentInfo, 'webOS')) {
                return 'webOS';
            } else if (strpos($userAgentInfo, 'PalmSource')) {
                return 'PalmSource';
            } else {
                return 'Others';
            }
        }
    /**
         * 字符串截取
         * @param $str
         * @param $length
         * @param bool $suffix
         * @param string $charset
         * @return string
         */
        public static function strLen($str, $length, $suffix = true, $charset = "utf-8") {
            if ($charset != 'utf-8') {
                $str = mb_convert_encoding($str, 'utf8', $charset);
            }
            $osLen = mb_strlen($str);
            if ($osLen <= $length) {
                return $str;
            }
            $string = mb_substr($str, 0, $length, 'utf8');
            $sLen = mb_strlen($string, 'utf8');
            $bLen = strlen($string);
            $sCharCount = (3 * $sLen - $bLen) / 2;
            if ($osLen <= $sCharCount + $length) {
                $arr = preg_split('/(?<!^)(?!$)/u', mb_substr($str, $length + 1, $osLen, 'utf8')); //将中英混合字符串分割成数组(UTF8下有效)
            } else {
                $arr = preg_split('/(?<!^)(?!$)/u', mb_substr($str, $length + 1, $sCharCount, 'utf8'));
            }
            foreach ($arr as $value) {
                if (ord($value) < 128 && ord($value) > 0) {
                    $sCharCount = $sCharCount - 1;
                } else {
                    $sCharCount = $sCharCount - 2;
                }
                if ($sCharCount <= 0) {
                    break;
                }
                $string .= $value;
            }
            if ($suffix) return $string . '…';
    
            return $string;
        }
  • 相关阅读:
    Opencv 中透视变换函数对IplImage图像变换时出现的问题?
    algorithm ch15 FastWay
    LeetCode 151 reverse word in a string
    LeetCode 10 Regular Expression Match
    LeetCode the longest palindrome substring
    MS笔试中的一个关于函数返回的“小”题
    js数组
    js数据强转
    css居中问题
    html table
  • 原文地址:https://www.cnblogs.com/pcyy/p/9360953.html
Copyright © 2020-2023  润新知