'0123456789', 'capital_chars' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'lower_chars' => 'abcdefghijklmnopqrstuvwxyz' ]; $string = ''; foreach ($str_content as $k => $v) { if (array_key_exists($v, $char_set)) { $string .= $char_set[$v]; } else { $string .= $v; } } $result = ""; for ($i = 0; $i < $length; $i++) { $result .= substr($string, mt_rand(0, strlen($string) - 1), 1); } return $result; } /** * 生成snowid(循环时请勿使用此选项) * @date 2021-03-01 */ //function createSnowId(){ // $snow_flake = new Godruoyi\Snowflake\Snowflake(); // return $snow_flake->id(); //} /** * 根据经纬度计算距离 * @param string $lat1 起始点纬度 * @param string $lng1 起始点经度 * @param string $lat2 终点纬度 * @param string $lng2 终点经度 * @date 2021-01-22 */ function getdistance($lat1, $lng1, $lat2, $lng2) { $EARTH_RADIUS = 6378.137; $radLat1 = rad($lat1); $radLat2 = rad($lat2); $a = $radLat1 - $radLat2; $b = rad($lng1) - rad($lng2); $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))); $s = $s * $EARTH_RADIUS; $s = round($s, 3); //千米为单位,3位小数 return $s; } /** * 根据经纬度计算距离 -- 子方法 * @param string $d 经纬度 * @date 2021-01-22 */ function rad($d) { return $d * 3.1415926535898 / 180.0; } /** * 系统非常规MD5加密方法 * @param string $str 要加密的字符串 * @param string $key 加密字符 * @date 2021-01-22 */ function md5WithKey($str, $key = 'A?x"nbN7hp,$<|ItOU^@Cc#&1%qyX.iPdH~u-8Jm') { return '' === $str ? '' : md5(sha1($str) . $key); } /** * 序列化与反序列化 */ function serializeMysql($info, $type = 0) { if ($type == 0) { return addslashes(serialize($info)); } else { return unserialize(stripslashes($info)); } } /** * 后台菜单更新链接 * @param: $module_name 模块名 $controller_name 控制器名 $action_name 方法名 $param 参数 */ function getMenuLinkurl($module_name,$controller_name, $action_name, $param) { return url($module_name.'/'.$controller_name . '/' . $action_name, $param); } /** * 搜索 * @param $arr * @param $search */ function autoSearch($arr, &$search) { foreach ($arr as $k => $v) { if (!isset($search[$v])) { $search[$v] = ''; } } } /** * 系统非常规MD5加密方法 * @date 2018-11-27 * @param string $str 要加密的字符串 * @param string $key 加密字符 */ function thinkUcenterMd5($str, $key = 'ThinkUCenter') { return '' === $str ? '' : md5(sha1($str) . $key); } /** * 获取当前或者服务器端的IP 2018-04-19 * @param int $type 获取服务器IP类型 1为本地服务器 2为代码服务器 */ function getClientIp($type = 1) { if ($type == 1) { return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0'; } else if ($type == 2) { return isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '0.0.0.0'; } } /** * 格式化数字 * @param string $num 要格式化数字 * @param int $decimal 保留X位小数 * @return string */ function formatNumber($num, $decimal = 2) { return sprintf('%.' . $decimal . 'f', $num); } /** * 创建唯一标示 * @param int $number 可选位数 * @return string 最长为88位 */ function createUuid($number = 10) { $str = md5(uniqid(mt_rand(), true)); $uuid = substr($str, 0, floor($number / 5)); $number -= floor($number / 5); $uuid .= substr($str, 8, floor($number / 4)); $number -= floor($number / 4); $uuid .= substr($str, 12, floor($number / 3)); $number -= floor($number / 3); $uuid .= substr($str, 16, floor($number / 2)); $number -= floor($number / 2); $uuid .= substr($str, 20, $number); return $uuid; } /** * 获取当前或者服务器端的IP * @author aurora * @date 2018-10-25 * @param int $type 获取服务器IP类型 1--本地服务器 2--代码服务器 * @return string */ function getUserIp($type = 1) { if ($type == 1) { return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0'; } else if ($type == 2) { return isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '0.0.0.0'; } }