本站即日起正式部署SSL证书启用https安全连接, 联系站长:416326801#qq.com(#改成@)

Latest from the blog

URL安全的字符串base64编码和解码

标签: PHP

// URL安全的字符串base64编码
function base64_encode_urlsafe($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
    return $data;
}

// URL安全的字符串base64解码
function base64_decode_urlsafe($string) {
    $data = str_replace(array('-', '_'), array('+', '/'), $string);
    $mod4 = strlen($data) % 4;
    if( $mod4 ) {
        $data .= substr('====', $mod4);
    }
    return base64_decode($data);
}

去掉微信昵称的emoji表情(PHP5.6)

标签: PHP Weixin

// 处理不可见字符 去掉EMOJI表情
function clearEmoji($char) {
// PHP 5.6已废弃preg_replace
//    $char = preg_replace("#\\\u[2def]([0-9a-f]{3})#ie", "", json_encode($char));
//    return json_decode($char, true);
    $str = preg_replace_callback('/./u', function (array $match) {
        return strlen($match[0]) >= 4 ? '' : $match[0];
    }, $str);
    return $str;
}

生成校验位(银行卡最后一位)

标签: PHP

** 注意:$s必须全部为数字

// 计算校验位
function encodeCode($s) {
    $a = $b = $c = $d = $e = 0;
    $s = str_split($s);
    $count = count($s);
    for( $i = 1; $i <= $count; $i++ ) {
        $sc = intval($s[$i - 1]);
        if( $i <= $count && $i % 2 == 0 ) {
            $a += $sc;
        } elseif( $i <= $count - 1 && $i % 2 == 1 ) {
            $b += $sc;
        }
    }
    $c = $a * 3;
    $d = $b + $c;
    if( $d % 10 == 0 ) {
        $e = $d - $d;
    } else {
        $e = $d + (10 - $d % 10) - $d;
    }
    return $e;
}

判断是否身份证号码

标签: PHP

计算身份证号码最后一位,判断身份证号码是否正确
// 身份证校验码,根据国家标准GB 11643-1999 
function isIdCardNumber($card_number) {
    if( strlen($card_number) != 18 ) {
        return false;
    }
    $crad_id_base = substr($card_number, 0, 17);
    $crad_id_verify = substr($card_number, -1);
    // 加权因子 
    $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3);
    // 校验码对应值 
    $verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    $checksum = 0;
    for( $i = 0; $i < strlen($crad_id_base); $i++ ) {
        $checksum += substr($crad_id_base, $i, 1) * $factor[$i % 10];
    }
    $mod = $checksum % 11;
    if( $crad_id_verify == $verify_number_list[$mod] ) {
        return true;
    }
    return false;
}

生成微信支付签名

标签: PHP Weixin wxpay

// 格式化参数格式化成url参数
// 不同于http_build_query,本函数不会对参数urlencode
private function toUrlParams($param) {
    $buff = "";
    foreach( $param as $k => $v ) {
        if( $k != "sign" && $v !== "" && $v !== NULL && !is_array($v) ) {
            $buff .= $k."=".$v."&";
        }
    }
    $buff = trim($buff, "&");
    return $buff;
}

// 生成签名
public function makeSign($param, $key) {
    if( !$key || empty($key) ) {
        return false;
    }
    // ①按字典序排序参数
    ksort($param);
    $string = $this->toUrlParams($param);
    // ②在string后加入KEY
    $string = $string."&key=".$key;
    // ③MD5加密,④所有字符转为大写
    return strtoupper(md5($string));
}
1 2 3 4 5 6 7 8 ... Next »... Last »