PHP 一些常用的公共小技巧方法整理

  • 在此,整理一下平常工作中,常用的一些公共方法,方便后期开发使用
/**
 * 公用的方法  返回json数据,进行信息的提示
 * @param int $status 状态
 * @param string $msg 提示信息
 * @param array $data 返回数据
 */
function showMsg($status = 1,$msg = '',$data = array()){
    
    
    $result = array(
        'status' => $status,
        'msg' =>$msg,
        'data' =>$data
    );
    return exit(json_encode($result,JSON_UNESCAPED_UNICODE));
}

/**
 * 判断一个数组中的元素是否全存在于另一个数组中
 * @param $arr array 一维数组
 * @param $allArr array 一维数组
 * @return boolean
 */
function currArrExistsInOther($arr = [], $allArr = []){
    
    
    if (!empty($arr) && !empty($allArr)) {
    
    
        for ($i = 0; $i < count($arr); $i ++) {
    
    
            if (!in_array($arr[$i], $allArr)) {
    
    
                return false;
            }
        }
        return true;
    }else{
    
    
        return false;
    }
 }
/**
 * 用户二维码图片
 * @param $user_id [用户id]
 * @param $recommend[推荐码]
 * @param $data[链接地址]
 */
//生成图片二维码 $data链接  $id user_id;
function code($url,$user_id,$recommend){
    
    
    $user=M('users')->field('user_name')->where('user_id='.$user_id)->find();
    $user_name=$user['user_name'];
    $canshu="?r_ec=$recommend";
    $url=$url.$canshu;
    vendor("phpqrcode.phpqrcode");
    // 纠错级别:L、M、Q、H
    $level = 'H';
    // 点的大小:1到10,用于手机端4就可以了
    $size = 4;
    // 下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false
    $path = "Public/code/".date("ymd")."/";
    if(!is_dir($path))
    {
    
    
        mkdir($path);
    }
    $fileName = $path.$user_name.'.png';
    $data['code']=$fileName;
    M('users')->where('user_id='.$user_id)->save($data);
    ob_end_clean();//清空缓冲区
    QRcode::png($url, $fileName, $level, $size,1);
}

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

//获取用户ip地址
function get_ip() {
    
    
    static $ip;
    if (isset($_SERVER)) {
    
    
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
    
    
            $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
    
    
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
    
    
            $ip = $_SERVER["REMOTE_ADDR"];
        }
    } else {
    
    
        if (getenv("HTTP_X_FORWARDED_FOR")) {
    
    
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        } else if (getenv("HTTP_CLIENT_IP")) {
    
    
            $ip = getenv("HTTP_CLIENT_IP");
        } else {
    
    
            $ip = getenv("REMOTE_ADDR");
        }
    }

    if (preg_match('/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $ip)) {
    
    
        return $ip;
    } else {
    
    
        return '127.0.0.1';
    }
}
  • php使用 curl 判断404
/**
 * php使用 curl 判断404
 * @param string $url
 * @return bool
 */
function check_url($url = ''){
    
    
    stream_context_set_default(
        array(
            'http' => array(
                'timeout' => 5,
            )
        )
    );
    $header = get_headers($url,1);
    if(strpos($header[0],'200')){
    
    
        return true;
    }
    if(strpos($header[0],'404')){
    
    
        return false;
    }
    if (strpos($header[0],'301') || strpos($header[0],'302')) {
    
    
        if(is_array($header['Location'])) {
    
    
            $redirectUrl = $header['Location'][count($header['Location'])-1];
        }else{
    
    
            $redirectUrl = $header['Location'];
        }
        return check_url($redirectUrl);
    }
}

猜你喜欢

转载自blog.csdn.net/u011415782/article/details/119040523
今日推荐