信息资讯综合思念体

【常用函数】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];
}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

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

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