• 身份证号码格式检测



    //验证身份证是否有效
    function validateIDCard($IDCard) {
    if (strlen($IDCard) == 18) {
    return check18IDCard($IDCard);
    } elseif ((strlen($IDCard) == 15)) {
    $IDCard = convertIDCard15to18($IDCard);
    return check18IDCard($IDCard);
    } else {
    return false;
    }
    }

    //计算身份证的最后一位验证码,根据国家标准GB 11643-1999
    function calcIDCardCode($IDCardBody) {
    if (strlen($IDCardBody) != 17) {
    return false;
    }

    //加权因子
    $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    //校验码对应值
    $code = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    $checksum = 0;

    for ($i = 0; $i < strlen($IDCardBody); $i++) {
    $checksum += substr($IDCardBody, $i, 1) * $factor[$i];
    }

    return $code[$checksum % 11];
    }

    // 将15位身份证升级到18位
    function convertIDCard15to18($IDCard) {
    if (strlen($IDCard) != 15) {
    return false;
    } else {
    // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
    if (array_search(substr($IDCard, 12, 3), array('996', '997', '998', '999')) !== false) {
    $IDCard = substr($IDCard, 0, 6) . '18' . substr($IDCard, 6, 9);
    } else {
    $IDCard = substr($IDCard, 0, 6) . '19' . substr($IDCard, 6, 9);
    }
    }
    $IDCard = $IDCard . calcIDCardCode($IDCard);
    return $IDCard;
    }

    // 18位身份证校验码有效性检查
    function check18IDCard($IDCard) {
    if (strlen($IDCard) != 18) {
    return false;
    }

    $IDCardBody = substr($IDCard, 0, 17); //身份证主体
    $IDCardCode = strtoupper(substr($IDCard, 17, 1)); //身份证最后一位的验证码

    if (calcIDCardCode($IDCardBody) != $IDCardCode) {
    return false;
    } else {
    return true;
    }
    }

    使用方法:
    if(!validateIDCard($idNumber)){
    echo '身份证号码格式不正确';
    }
     
  • 相关阅读:
    让ASP.NET MVC页面返回不同类型的内容
    在 ASP.NET MVC 中使用 HTTPS (SSL/TLS)
    BrnMall多店版网上商城正式发布
    Brn系列网上商城发布指南
    CSS和SVG中的剪切——clip-path属性和<clipPath>元素
    C#实现调用Java类中方法
    WCF 第五章 会话级别的实例
    细说 ASP.NET Cache 及其高级用法
    C#使用SOAP调用Web Service
    JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
  • 原文地址:https://www.cnblogs.com/wenxinphp/p/10634735.html
Copyright © 2020-2023  润新知