信息资讯综合思念体

【常用函数】php 身份证有效性验证函数 check_idcard()

帮助函数

验证18位身份证的校验位


/**
 * 身份证验证
 * @param $id_card
 *
 * @return bool
 */
function check_id_card($id_card)
{
    $id_card = strtoupper($id_card);

    //验证有效性
    $pattern = '/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/';

    $passed = preg_match($pattern, $id_card);

    if ($passed == 0) {
        return (bool) $passed;
    }

    if (strlen($id_card) == 15) {
        return true;
    }

    //验证校验位
    $a = str_split($id_card, 1);
    $w = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    $c = array(1, 0, 'X',  9, 8, 7, 6, 5, 4, 3, 2);

    $sum = 0;
    for ($i = 0; $i < 17; $i++) {
        $sum += $a[$i] * $w[$i];
    }

    return $c[$sum % 11] == $a[17];
}


«   2021年9月   »
12345
6789101112
13141516171819
20212223242526
27282930
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接
  • RainbowSoft Studio Z-Blog
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.1 Zero Theme By 爱墙纸

百度资讯综合思念体对有机生命接触用人形终端界面 那就是
晋ICP备15000230号-1