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);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值