个人收集项目常用方法合集

一、快速生成订单号:

public function orderNorandom($length,$start){//$length默认11位随机,$start订单号前缀,JT20180517123456789101
	$code_arr=["1","2", "3", "4", "5", "6", "7", "8", "9","0"];
	$date = date('Ymd',time());
	for ($i = 0; $i < $length ; $i++) {
		$code .= $code_arr[rand(0,9)];
		}
	return $start.$date.$code;
}

二、快速生成随机校验码

public function jym($length){//$length默认11位随机
	$code_arr=["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "K", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "2", "3", "4", "5", "6", "7", "8", "9"];;
	$date = date('Ymd',time());
	for ($i = 0; $i < $length ; $i++) {
		$code .= $code_arr[rand(0,9)];
	}
	return $code;
}

三、快速生成32位uuid码

public function uuid($prefix = '')  {
        $chars = md5(uniqid(mt_rand(), true));
        // $uuid  = substr($chars,0,8) . '-';
        // $uuid .= substr($chars,8,4) . '-';
        // $uuid .= substr($chars,12,4) . '-';
        // $uuid .= substr($chars,16,4) . '-';
        // $uuid .= substr($chars,20,12);
        return $prefix . $chars;
    }

四、PHP获取当前url地址

public function get_url() {
      $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;
}

五、PHP判断是否是微信内置浏览器

public function is_weixin(){ 
    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
        return true;
    }  
    return false;
}

六、PHP获取浏览器版本

    function get_broswer(){
         $sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串
         if (stripos($sys, "Firefox/") > 0) {
             preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);
             $exp[0] = "Firefox";
             $exp[1] = $b[1];  //获取火狐浏览器的版本号
         } elseif (stripos($sys, "Maxthon") > 0) {
             preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);
             $exp[0] = "傲游";
             $exp[1] = $aoyou[1];
         } elseif (stripos($sys, "MSIE") > 0) {
             preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);
             $exp[0] = "IE";
             $exp[1] = $ie[1];  //获取IE的版本号
         } elseif (stripos($sys, "OPR") > 0) {
                 preg_match("/OPR\/([\d\.]+)/", $sys, $opera);
             $exp[0] = "Opera";
             $exp[1] = $opera[1];
         } elseif(stripos($sys, "Edge") > 0) {
             //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
             preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);
             $exp[0] = "Edge";
             $exp[1] = $Edge[1];
         } elseif (stripos($sys, "Chrome") > 0) {
                 preg_match("/Chrome\/([\d\.]+)/", $sys, $google);
             $exp[0] = "Chrome";
             $exp[1] = $google[1];  //获取google chrome的版本号
         } elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){
             preg_match("/rv:([\d\.]+)/", $sys, $IE);
                 $exp[0] = "IE";
             $exp[1] = $IE[1];
         }else {
            $exp[0] = "未知浏览器";
            $exp[1] = "";
         }
         return $exp[0].'('.$exp[1].')';
    }

七、PHP获取客户端IP

/**
     * 获取客户端IP地址
     * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
     * @param boolean $adv 是否进行高级模式获取(有可能被伪装)
     * @return mixed
     */
    function get_client_ip($type = 0,$adv=false) {
        $type       =  $type ? 1 : 0;
        static $ip  =   NULL;
        if ($ip !== NULL) return $ip[$type];
        if($adv){//高级模式获取(防止伪装)
            if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
                $pos    =   array_search('unknown',$arr);
                if(false !== $pos) unset($arr[$pos]);
                $ip     =   trim($arr[0]);
            }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
                $ip     =   $_SERVER['HTTP_CLIENT_IP'];
            }elseif (isset($_SERVER['REMOTE_ADDR'])) {
                $ip     =   $_SERVER['REMOTE_ADDR'];
            }
        }elseif (isset($_SERVER['REMOTE_ADDR'])) {
            $ip     =   $_SERVER['REMOTE_ADDR'];
        }
        // IP地址合法验证
        $long = sprintf("%u",ip2long($ip));
        $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);
        return $ip[$type];
    }

八、计算经纬度之间的距离

/**
     * @param 计算两个经纬度坐标之间的距离
     * lng:经度
     * lat:纬度
     */
    public function getdistance($lng1, $lat1, $lng2, $lat2) {
        // 将角度转为狐度
        $radLat1 = deg2rad($lat1); //deg2rad()函数将角度转换为弧度
        $radLat2 = deg2rad($lat2);
        $radLng1 = deg2rad($lng1);
        $radLng2 = deg2rad($lng2);
        $a = $radLat1 - $radLat2;
        $b = $radLng1 - $radLng2;
        $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;
        // 2 * asin(sqrt(pow(sin(deg2rad('.$lat1.')-deg2rad('wd') / 2),2) + COS(deg2rad'.$lat1.')*COS(deg2rad'wd')*pow(sin(deg2rad('.$lng1.')-(deg2rad'jd')) / 2,2)))*6378.137 * 1000
        return $s;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夜大风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值