有用的函数

<?php

/**
 * @desc 二维数组排序
 * @date 2015-8-13 14:08:15
 * @param 
 * @return arr
 */
function multi_array_sort($multi_array, $sort_key, $sort = SORT_ASC) {
    if (is_array($multi_array)) {
        foreach ($multi_array as $row_array) {
            if (is_array($row_array)) {
                $key_array[] = $row_array[$sort_key];
            } else {
                return false;
            }
        }
    } else {
        return false;
    }
    array_multisort($key_array, $sort, $multi_array);
    return $multi_array;
}



/**
	* 判断IP是否在某个网络内
	* @param $ip
	* @param $network
	* @return bool
*/

function ip_in_network($ip, $network)
{
    $ip = (double) (sprintf("%u", ip2long($ip)));
    $s = explode('/', $network);
    $network_start = (double) (sprintf("%u", ip2long($s[0])));
    $network_len = pow(2, 32 - $s[1]);
    $network_end = $network_start + $network_len - 1;

    if ($ip >= $network_start && $ip <= $network_end)
    {
        return true;
    }
    return false;
}
}
//加密
function encrypt($data, $key)
{
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}


//解密
function decrypt($data, $key)
{
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
        {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        }
        else
        {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}
/**
 * 获得客户端真实的IP地址
 * @return string
 */
function getClientIp() {
    //****************************先考虑cdn****************************/
    //网宿
    if (isset($_SERVER["HTTP_CDN_SRC_IP"]) && !empty($_SERVER["HTTP_CDN_SRC_IP"]) && strtolower($_SERVER["HTTP_CDN_SRC_IP"]) != 'unknown') {
        $_ip_string = $_SERVER['HTTP_CDN_SRC_IP'];
    }


    //cloudflare
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"]) && !empty($_SERVER["HTTP_CF_CONNECTING_IP"]) && strtolower($_SERVER["HTTP_CF_CONNECTING_IP"]) != 'unknown') {
        $_ip_string = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }


    //incapsula
    if (isset($_SERVER["HTTP_INCAP_CLIENT_IP"]) && !empty($_SERVER["HTTP_INCAP_CLIENT_IP"]) && strtolower($_SERVER["HTTP_INCAP_CLIENT_IP"]) != 'unknown') {
        $_ip_string = $_SERVER["HTTP_INCAP_CLIENT_IP"];
    }


    //****************************判断cdn是否获取到IP,如果无就普通获取****************************/
    if (!isset($_ip_string) || empty($_ip_string)) {
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && !empty($_SERVER["HTTP_X_FORWARDED_FOR"]) && strtolower($_SERVER["HTTP_X_FORWARDED_FOR"]) != 'unknown') {
            $_ip_string = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } elseif (isset($_SERVER["HTTP_X_FORWARD_FOR"]) && !empty($_SERVER["HTTP_X_FORWARD_FOR"]) && strtolower($_SERVER["HTTP_X_FORWARD_FOR"]) != 'unknown') {
            $_ip_string = $_SERVER["HTTP_X_FORWARD_FOR"];
        } elseif (isset($_SERVER["HTTP_CLIENT_IP"]) && !empty($_SERVER["HTTP_CLIENT_IP"]) && strtolower($_SERVER["HTTP_CLIENT_IP"]) != 'unknown') {
            $_ip_string = $_SERVER["HTTP_CLIENT_IP"];
        } elseif (isset($_SERVER["HTTP_X_REAL_IP"]) && !empty($_SERVER["HTTP_X_REAL_IP"]) && strtolower($_SERVER["HTTP_X_REAL_IP"]) != 'unknown') {
            $_ip_string = $_SERVER["HTTP_X_REAL_IP"]; //nginx 代理模式下,获取客户端真实IP,百度用
        } elseif (isset($_SERVER["REMOTE_ADDR"]) && !empty($_SERVER["REMOTE_ADDR"]) && strtolower($_SERVER["REMOTE_ADDR"]) != 'unknown') {
            $_ip_string = $_SERVER["REMOTE_ADDR"];
        } else {
            $_ip_string = "127.0.0.1";
        }
    }


    if (stristr($_ip_string, ',') != false) {
        $ipArray = explode(',', $_ip_string);
        $_ip_string = $ipArray[0];
    }


    return trim($_ip_string);
}
/**
 * 获取已经过了多久
 * PHP时间转换
 * 刚刚、几分钟前、几小时前
 * 今天昨天前天几天前
 * @param  string $targetTime 时间戳
 * @return string
 */
function get_last_time($targetTime)
{
    // 今天最大时间
    $todayLast   = strtotime(date('Y-m-d 23:59:59'));
    $agoTimeTrue = time() - $targetTime;
    $agoTime     = $todayLast - $targetTime;
    $agoDay      = floor($agoTime / 86400);


    if ($agoTimeTrue < 60) {
        $result = '刚刚';
    } elseif ($agoTimeTrue < 3600) {
        $result = (ceil($agoTimeTrue / 60)) . '分钟前';
    } elseif ($agoTimeTrue < 3600 * 12) {
        $result = (ceil($agoTimeTrue / 3600)) . '小时前';
    } elseif ($agoDay == 0) {
        $result = '今天 ' . date('H:i', $targetTime);
    } elseif ($agoDay == 1) {
        $result = '昨天 ' . date('H:i', $targetTime);
    } elseif ($agoDay == 2) {
        $result = '前天 ' . date('H:i', $targetTime);
    } elseif ($agoDay > 2 && $agoDay < 16) {
        $result = $agoDay . '天前 ' . date('H:i', $targetTime);
    } else {
        $format = date('Y') != date('Y', $targetTime) ? "Y-m-d H:i" : "m-d H:i";
        $result = date($format, $targetTime);
    }
    return $result;
}

//判断是否是手机端



function isMobile() {  
  // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 
  if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { 
    return true; 
  }  
  // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 
  if (isset($_SERVER['HTTP_VIA'])) {  
    // 找不到为flase,否则为true 
    return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; 
  }  
  // 脑残法,判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信 
  if (isset($_SERVER['HTTP_USER_AGENT'])) { 
    $clientkeywords = array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile','MicroMessenger');  
    // 从HTTP_USER_AGENT中查找手机浏览器的关键字 
    if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { 
      return true; 
    }  
  }  
  // 协议法,因为有可能不准确,放到最后判断 
  if (isset ($_SERVER['HTTP_ACCEPT'])) {  
    // 如果只支持wml并且不支持html那一定是移动设备 
    // 如果支持wml和html但是wml在html之前则是移动设备 
    if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { 
      return true; 
    }  
  }  
  return false; 
}
//判断是否是微信内置浏览器


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

此文会持续更新。。。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值