當(dāng)前位置:博客首頁>>片言碎語 >> 閱讀正文

php 驗證身份證號

作者: 鄭曉 分類: 片言碎語 發(fā)布于: 2019-09-21 21:36 瀏覽:8,437 評論(3)


轉(zhuǎn)載,PHP驗證身份證號的正確性,使用了正則驗證身份證號中的省市數(shù)據(jù)、出生日期,驗證尾號識別碼。

private function is_idcard($vStr) { $vCity = 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'); if (!preg_match('/^(\d{17}[xX\d]|\d{15})$/', $vStr)) return false; if (!in_array(substr($vStr, 0, 2), $vCity)) return false; $vStr = preg_replace('/[xX]$/i', 'a', $vStr); $vLength = strlen($vStr); if ($vLength == 18) { $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2); } else { $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2); } if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false; if ($vLength == 18) { $vSum = 0; for ($i = 17; $i >= 0; $i--) { $vSubStr = substr($vStr, 17 - $i, 1); $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr, 11)); } if ($vSum % 11 != 1) return false; } return true; }

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://yjfs.org.cn/php-verify-idcard.html

php 驗證身份證號:目前有3 條留言

用戶評論頭像 yongxinchang發(fā)表于 2020年07月15日 15:16[回復(fù)]

這個數(shù)組不太會用

用戶評論頭像 流量發(fā)表于 2020年04月15日 17:52[回復(fù)]

流量流量流量流量

用戶評論頭像 大薩達(dá)撒所發(fā)表于 2019年10月23日 20:37[回復(fù)]

大大

發(fā)表評論

change vcode