PHP常用实用函数集合

全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:925篇文章
  • 发布时间:2021年03月02日 21:37:38
  • 所属分类:PHP+MySql
  • 阅读次数:1954次阅读
  • 标签:

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;
    }
}

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!