<?php
// 应用公共文件

if (!function_exists('urlencode2')) {
    /**
     * 2次URL解码
     * @param $str
     * @return string
     */
    function urlencode2($str)
    {
        return urlencode(urlencode($str));
    }
}

if (!function_exists('urldecode2')) {
    /**
     * 2次URL解码
     * @param $str
     * @return string
     */
    function urldecode2($str)
    {
        return urldecode(urldecode($str));
    }
}

if (!function_exists('returnFormat')) {
    /**
     * 格式化输出返回值
     * @param int $code
     * @param string $msg
     * @param array $data
     * @return mixed
     */
    function returnFormat($code = 0, $msg = "", $data = [])
    {
        $res['code'] = $code;
        $res['data'] = $data;
        $res['msg'] = $msg;
        return $res;
    }
}


if (!function_exists('each_item')) {
    function each_item(&$array)
    {
        $res = array();
        $key = key($array);
        if ($key !== null) {
            next($array);
            $res[1] = $res['value'] = $array[$key];
            $res[0] = $res['key'] = $key;
        } else {
            $res = false;
        }
        return $res;
    }
}

if (!function_exists('getVirRootDir')) {
    /**
     * 获取虚拟目录路径
     * @return bool|string
     */
    function getVirRootDir()
    {
        $url = $_SERVER['SCRIPT_NAME'];
        $url = substr($url, 0, strripos($url, "/"));
        return $url;
    }
}


if (!function_exists('getNow')) {
    /**
     * 获取当时时间
     * @param string $fmt 格式化
     * @return false|string
     */
    function getNow($fmt = "Y-m-d H:i:s")
    {
        return date($fmt);
    }
}

if (!function_exists('getUrl')) {
    /**
     * 获取当前的访问路径
     * @return [type] [description]
     */
    function getUrl()
    {
        $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
        $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
        $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
        $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self . (isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : $path_info);
        return $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relate_url;
    }
}

if (!function_exists('number2chinese')) {

    function number2chinese($num)
    {
        $arr = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
        $cny = array('', '拾', '佰', '仟', '', '萬', '亿', '兆');
        //小数部分
        $retval = '';
        if (strpos($num, '.') !== false) {
            list($num, $dec) = explode('.', $num);
            $retval .= $arr[$dec[0]] . '角' . $arr[$dec[1]] . '分';
        }
        //整数部分
        $str = $num != '0' ? strrev($num) : '';
        $out = array();
        for ($i = 0; $i < strlen($str); $i++) {
            $out[$i] = $arr[$str[$i]];
            $out[$i] .= $str[$i] != '0' ? $cny[$i % 4] : '';
            if ($i > 1 && $str[$i] + $str[$i - 1] == 0) {
                $out[$i] = '';
            }
            if ($i % 4 == 0) {
                $out[$i] .= $cny[4 + floor($i / 4)];
            }
            //echo $out[$i].'<br>';
        }
        $retval = implode('', array_reverse($out)) . '元' . $retval;
        return $retval;
    }
}


if (!function_exists('toUnderScore')) {
    /**
     * 驼峰命名转下划线命名
     * 思路:
     * 小写和大写紧挨一起的地方,加上分隔符,然后全部转小写
     * @param $camelCaps
     * @param string $separator
     * @return string
     * @author web
     */
    function toUnderScore($camelCaps, $separator = '_')
    {
        return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps));
    }
}


if (!function_exists('convertUTF8')) {
    /**
     * 解决中文乱码的问题
     * @param $str
     * @return string
     */
    function convertUTF8($str)
    {
        if (empty($str)) return '';
        return iconv('utf-8', 'gb2312', $str);
    }
}
if (!function_exists('isIdCardNo')) {
    /**
     * 判断是否为合法的身份证号码
     * @param $mobile
     * @return int
     */
    function isIdCardNo($vStr)
    {
        $vCity = array(
            '11', '12', '13', '14', '15', '21', '22',
            '23', '31', '32', '33', '34', '35', '36',
            '37', '41', '42', '43', '44', '45', '46',
            '50', '51', '52', '53', '54', '61', '62',
            '63', '64', '65', '71', '81', '82', '91'
        );

        if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return false;
        if (!in_array(substr($vStr, 0, 2), $vCity)) return false;
        $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
        $vLength = strlen($vStr);
        if ($vLength == 18) {
            $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
        } else {
            $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
            return false;//不考虑一代身份证了
        }
        if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;
        if ($vLength == 18) {
            $vSum = 0;
            for ($i = 17; $i >= 0; $i--) {
                $vSubStr = substr($vStr, 17 - $i, 1);
                $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr, 11));
            }
            if ($vSum % 11 != 1) return false;
        }
        return true;
    }
}
if (!function_exists('cleanEnter')) {
    /**
     * 清除回车换行和前后空格
     * @param $str
     * @return array|string|string[]
     */
    function cleanEnter($str)
    {
        $str = trim($str);
        $str = str_replace("\n", "", $str);
        $str = str_replace("\r", "", $str);
        return $str;
    }
}

if (!function_exists('randNum')) {
    /**
     * 获取数字随机数
     * @param $length 数字长度
     * @return int
     */
    function randNum($length = 8)
    {
        $min = pow(10, $length - 1) + 1;
        $max = pow(10, $length) - 1;
        $rand = rand($min, $max);
//        echo "length: $length, min: $min ,max: $max ,rand: $rand \r\n <br/>";
        return $rand;
    }
}