PHP常用实用函数集合

if (!function_exists('number_random')) {
    /**
     * 生成随机数字串
     *
     * @param int $length
     * @return string
     */
    function number_random($length = 6) {
        $result = '';
        for ($i = 0; $i < $length; $i++) {
            $result .= mt_rand(0, 9);
        }
        return $result;
    }
}
if (!function_exists('string_random')) {
    /**
     * 生成随机字符串
     *
     * @param int $length
     * @return string
     */
    function string_random($length = 6) {
        $result = '';
        for ($i = 0; $i < $length; $i++) {
            $rand = mt_rand(1, 3);
            switch ($rand) {
                case 1:
                                    $result .= mt_rand(0, 9);
                break;
                case 2:
                                    $result .= chr(mt_rand(65, 90));
                break;
                default:
                                    $result .= chr(mt_rand(97, 122));
                break;
            }
        }
        return $result;
    }
}
if (!function_exists('get_order_number')) {
    /**
     * 生成订单号
     *
     * @param int $length
     * @return string
     */
    function get_order_number($length = 32) {
        $date = date('YmdHis');
        $micro = explode('.', microtime(true))[1];
        $rand = string_random($length - (strlen($date) + strlen($micro)));
        return $date . $micro . $rand;
    }
}
if (!function_exists('check_bank_card')) {
    /**
     * 验证银行卡号
     *
     * @param string $card
     * @return bool
     */
    function check_bank_card(string $card) {
        $arr_no = str_split($card);
        $last_n = $arr_no[count($arr_no) - 1];
        krsort($arr_no);
        $i = 1;
        $total = 0;
        foreach ($arr_no as $n) {
            if ($i % 2 == 0) {
                $ix = $n * 2;
                if ($ix >= 10) {
                    $nx = 1 + ($ix % 10);
                    $total += $nx;
                } else {
                    $total += $ix;
                }
            } else {
                $total += $n;
            }
            $i++;
        }
        $total -= $last_n;
        $total *= 9;
        return $last_n == ($total % 10);
    }
}
if (!function_exists('blocking_lock')) {
    /**
     * 阻塞锁
     *
     * @param string $lock_name 锁名字
     * @param int $valid 有效秒数
     * @return mixed
     */
    function blocking_lock(string $lock_name, $valid = 3600) {
        $lock_key = 'blocking_lock';
        while ($exp = Redis::hget($lock_key, $lock_name)) {
            if ($exp < microtime(true)) {
                Redis::hdel($lock_key, $lock_name);
            }
            usleep(10);
        }
        return Redis::hset($lock_key, $lock_name, microtime(true) + $valid);
    }
}
if (!function_exists('blocking_unlock')) {
    /**
     * 释放阻塞锁
     *
     * @param string $lock_name
     * @return mixed
     */
    function blocking_unlock(string $lock_name) {
        $lock_key = 'blocking_lock';
        return Redis::hdel($lock_key, $lock_name);
    }
}
if (!function_exists('random_color')) {
    /**
     * 随机十六进制颜色
     *
     * @return string
     */
    function random_color() {
        $str = '#';
        for ($i = 0; $i < 6; $i++) {
            $randNum = rand(0, 15);
            switch ($randNum) {
                case 10:
                                    $randNum = 'a';
                break;
                case 11:
                                    $randNum = 'b';
                break;
                case 12:
                                    $randNum = 'c';
                break;
                case 13:
                                    $randNum = 'd';
                break;
                case 14:
                                    $randNum = 'e';
                break;
                case 15:
                                    $randNum = 'f';
                break;
            }
            $str .= $randNum;
        }
        return $str;
    }
}
if (!function_exists('get_hour_history')) {
    /**
     * 获取当日历史小时
     *
     * @return array
     */
    function get_hour_history() {
        $history = [];
        for ($i = 0; $i <= date('H'); $i++) {
            $history[] = $i;
        }
        return $history;
    }
}
if (!function_exists('isAjax')) {
    //检查是否为ajax
    function isAjax() {
        if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])=='xmlhttprequest') {
            return true;
        } else {
            return false;
        }
        ;
    }
}
if (!function_exists('check_upload')) {
    //检查上传文件类型,以及是否为http上传
    function check_upload($file) {
        $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
        $contentType = $file['type'];
        if (is_uploaded_file($file['tmp_name']) && $ext == 'txt' && $contentType == 'text/plain' && $file['error'] == 0) {
            return true;
        } else {
            return false;
        }
    }
}
if (!function_exists('mk_dirs')) {
    //递归构建目录
    function mk_dirs($dir) {
        return is_dir($dir) or (mk_dirs(dirname($dir)) and mkdir($dir, 0777));
    }
}
if (!function_exists('get_ip')) {
    function get_ip() {
        //获取用户的IP地址
        //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
        if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
            $ip = getenv('HTTP_CLIENT_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
            $ip = getenv('REMOTE_ADDR');
        } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        $res = preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : '';
        return $res;
    }
}
if (!function_exists('trim_data')) {
    //简单有用的数据过滤
    function trim_data($data) {
        $data = trim($data);
        $data = htmlspecialchars($data);
        $data = strip_tags($data);
        if(!get_magic_quotes_gpc()) {
            $data = addslashes($data);
        }
        return $data;
    }
}

 

posted @ 2021-01-13 15:18  PHP菜鸟-小菜鸡  阅读(149)  评论(0编辑  收藏  举报
Top