zoukankan      html  css  js  c++  java
  • PHP验证身份证格式

    /**
    * 验证身份证基本格式
    * @param $idcard
    * @return bool
    */
    public static function validateIdcard($idcard)
    {
    $City = array(
    '11', '12', '13', '14', '15', '21', '22',
    '23', '31', '32', '33', '34', '35', '36',
    '37', '41', '42', '43', '44', '45', '46',
    '50', '51', '52', '53', '54', '61', '62',
    '63', '64', '65', '71', '81', '82', '91'
    );
     
    // 身份证不是17+xX或18位数字或15位数字
    if (!preg_match('/^([d]{14,18}[xXd]|[d]{15})$/', $idcard)) {
    return false;
    }
    // 身份证城市不在列表中
    if (!in_array(substr($idcard, 0, 2), $City)) {
    return false;
    }
    $idcard = preg_replace('/[xX]$/i', 'a', $idcard);
    $length = strlen($idcard);
    if ($length == 18) {
    $vBirthday = substr($idcard, 6, 4) . '-' . substr($idcard, 10, 2) . '-' . substr($idcard, 12, 2);
    } else {
    $vBirthday = '19' . substr($idcard, 6, 2) . '-' . substr($idcard, 8, 2) . '-' . substr($idcard, 10, 2);
    }
    // 生日验证,并且如果生日大于现在的时间,也报错
    $birthdayTime = strtotime($vBirthday);
    if (date('Y-m-d', $birthdayTime) != $vBirthday && $birthdayTime > time()) {
    return false;
    }
    return true;
    }
  • 相关阅读:
    接口与抽象类的区别
    全排列(按字典序)
    设置mysql数据库的密码
    android中操作SQLite注意事项
    Android: Fragment详解
    android设置组件所占的比例
    九度oj 1482:玛雅人的密码
    ACM模板
    洛谷 P1156 垃圾陷阱
    AtCoder Beginner Contest 187 F
  • 原文地址:https://www.cnblogs.com/linzy/p/7654686.html
Copyright © 2011-2022 走看看