成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PHP校驗15位和18位身份證號的類封裝

PHP校驗15位和18位身份證號的類封裝

熱門標簽:智能電銷語音機器人資訊 海南外呼系統(tǒng)方案 打開百度地圖標注 山東電銷卡外呼系統(tǒng)原理是什么 兼職做地圖標注好賺錢嗎 400 電話 辦理 蘇州外呼系統(tǒng)有效果嗎 地圖標注怎么做商戶驗證 亳州企業(yè)外呼系統(tǒng)

新公司框架源碼的時候,發(fā)現(xiàn)了這個功能,于是搜索一番并封裝了一下身份證號校驗的類。

目前大家的身份證號大多是 18 位的,當然,也不排除有些老人的身份證號是 15 位的。

如果強制要求是 18 位的話,會比較好,因為 15 位的身份證號沒有校驗碼,可以說,只要了解大概結構,隨手都可以造出一系列身份證號碼來。

當然,如果只是單純的程序校驗, 18 位的身份證號碼也可以偽造,就是需要偽造者花點心思。

最好的還是調用相關部門給的接口,進行校驗。

本文所編寫的身份證號碼校驗,只是針對相關規(guī)則下的計算,是調用接口前能做的事情。

身份證號規(guī)則

15位:省份(2位) + 地級市(2位) + 縣級市(2位) + 出生年(2位) + 出生月(2位) + 出生日(2位) + 順序號(3位)

18位:省份(2位) + 地級市(2位) + 縣級市(2位) + 出生年(4位) + 出生月(2位) + 出生日(2位) + 順序號(3位) + 校驗位(1位)

相比之下, 18位 比 15位 多出生年 2位 、校驗位 1位 。

其中,順序號如果是偶數(shù),則說明是女生,順序號是奇數(shù),則說明是男生。

校驗位的計算:

有17位數(shù)字,分別是:

7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2

分別用身份證的前 17 位乘以上面相應位置的數(shù)字,然后相加。

接著用相加的和對 11 取模。

用獲得的值在下面 11 個字符里查找對應位置的字符,這個字符就是校驗位。

'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'

15位轉18位:

從上述的分析中,可以知道,只要補充上年分和校驗位就可以了。

一般情況下年份補充都是加上 19 就可以了。

校驗類的實現(xiàn)

通過分析身份證號的規(guī)則,了解到,有幾點是可以做的:

  • 檢查身份是否正確(一般不會變化,而且省份不多)
  • 檢查地級市和縣級市(如果有這方面的資源,可以考慮,不過一般不建議)
  • 檢查年月日
  • 檢查校驗碼

當然,因為可能部分人用的是 15位 的身份證號,所以需要一個轉換的方法,不過,這里還是建議限制需要 18位 的身份證號。

下面開始實現(xiàn):

初始化:

class IDCardFilter
{
  /**
   * 身份證號碼校驗
   *
   * @param string $idCard
   * @return bool
   */
  public function vaild($idCard)
  {
    // 基礎的校驗,校驗身份證格式是否正確
    if (!$this->isCardNumber($idCard)) {
      return false;
    }

    // 將 15 位轉換成 18 位
    $idCard = $this->fifteen2Eighteen($idCard);

    // 檢查省是否存在
    if (!$this->checkProvince($idCard)) {
      return false;
    }

    // 檢查生日是否正確
    if (!$this->checkBirthday($idCard)) {
      return false;
    }

    // 檢查校驗碼
    return $this->checkCode($idCard);
  }
}

上面已經(jīng)實現(xiàn)了一個校驗的方法,里面調用了類里的很多方法,下面一一實現(xiàn)。

檢測是否是身份證號碼:

這一塊的處理比較簡單,一個正則表達式搞定了。

其中, (^\d{15}$) 用于匹配 15位 身份證號的情況; (^\d{17}(\d|X)$) 用于匹配 18位 身份證號的情況。

const REGX = '#(^\d{15}$)|(^\d{17}(\d|X)$)#';

/**
 * 檢測是否是身份證號碼
 *
 * @param string $idCard
 * @return boolean
 */
public function isCardNumber($idCard)
{
  return preg_match(self::REGX, $idCard);
}

15位轉18位:

邏輯不復雜,先判斷是否是15位,然后判斷需要添加的年份,最終生成校驗碼拼接返回就OK了。

/**
 * 15位轉18位
 *
 * @param string $idCard
 * @return void
 */
public function fifteen2Eighteen($idCard)
{
  if (strlen($idCard) != 15) {
    return $idCard;
  }

  // 如果身份證順序碼是996 997 998 999,這些是為百歲以上老人的特殊編碼
  // $code = array_search(substr($idCard, 12, 3), [996, 997, 998, 999]) !== false ? '18' : '19';
  // 一般 19 就夠了
  $code = '19';
  $idCardBase = substr($idCard, 0, 6) . $code . substr($idCard, 6, 9);
  return $idCardBase . $this->genCode($idCardBase);
}

校驗碼的生成:

詳細計算規(guī)則見上面,這里就不做重復的闡述了。

/**
 * 生成校驗碼
 *
 * @param string $idCardBase
 * @return void
 */
final protected function genCode($idCardBase)
{
  $idCardLength = strlen($idCardBase);
  if ($idCardLength != 17) {
    return false;
  }
  $factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  $verifyNumbers = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
  $sum = 0;
  for ($i = 0; $i  $idCardLength; $i++) {
    $sum += substr($idCardBase, $i, 1) * $factor[$i];
  }
  $index = $sum % 11;
  return $verifyNumbers[$index];
}

檢查省份是否正確:

protected $provinces = [
  11 => "北京", 12 => "天津", 13 => "河北",  14 => "山西", 15 => "內(nèi)蒙古",
  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 => "國外"
];

/**
 * 檢查省份是否正確
 *
 * @param string $idCard
 * @return void
 */
public function checkProvince($idCard)
{
  $provinceNumber = substr($idCard, 0, 2);
  return isset($this->provinces[$provinceNumber]);
}

檢測生日是否正確:

這里也是用正則匹配,匹配出年月日的。

/**
 * 檢測生日是否正確
 *
 * @param string $idCard
 * @return void
 */
public function checkBirthday($idCard)
{
  $regx = '#^\d{6}(\d{4})(\d{2})(\d{2})\d{3}[0-9X]$#';
  if (!preg_match($regx, $idCard, $matches)) {
    return false;
  }
  array_shift($matches);
  list($year, $month, $day) = $matches;
  return checkdate($month, $day, $year);
}

校驗碼比對:

話說, 15位 轉 18位 的都完全不用考慮這個方法了。

/**
 * 校驗碼比對
 *
 * @param string $idCard
 * @return void
 */
public function checkCode($idCard)
{
  $idCardBase = substr($idCard, 0, 17);
  $code = $this->genCode($idCardBase);
  return $idCard == ($idCardBase . $code);
}

完整代碼

傳送門:IDCardFilter

最后

這個功能最多算是新穎吧,畢竟之前沒有接觸過。很開心代碼片段里又增加了新的成員。

以上所述是小編給大家介紹的PHP校驗15位和18位身份證號的類封裝,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • php驗證身份證號碼正確性的函數(shù)
  • php正則判斷是否為合法身份證號的方法
  • PHP 身份證號驗證函數(shù)
  • php根據(jù)身份證號碼計算年齡的實例代碼
  • php提取身份證號碼中的生日日期以及驗證是否為成年人的函數(shù)
  • PHP實現(xiàn)中國公民身份證號碼有效性驗證示例代碼
  • 使用php從身份證號中獲取一系列線索(星座、生肖、生日等)
  • PHP實現(xiàn)可精確驗證身份證號碼的工具類示例
  • php身份證號碼檢查類實例
  • PHP用身份證號獲取星座和生肖的方法
  • PHP實現(xiàn)15位身份證號轉18位的方法分析

標簽:溫州 清遠 呼倫貝爾 綏化 安康 金華 紹興 萊蕪

巨人網(wǎng)絡通訊聲明:本文標題《PHP校驗15位和18位身份證號的類封裝》,本文關鍵詞  PHP,校驗,15位,和,18位,身份證,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP校驗15位和18位身份證號的類封裝》相關的同類信息!
  • 本頁收集關于PHP校驗15位和18位身份證號的類封裝的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    懂色av中文字幕一区二区三区| 亚洲熟妇无码久久精品| 成人a在线视频免费观看| 特级黄国产片一级视频播放| 国产视频你懂的| 亚洲av无码片一区二区三区| 国产成人禁片免费观看| 你微笑时很美电视剧整集高清不卡| 亚洲国产91视频| 97在线免费视频| 国产农村老头老太视频| 日本一区免费网站| 成人午夜视频在线| dy888亚洲精品一区二区三区| 浅井舞香一区二区| 意大利激情丛林无删减版dvd| 亚洲最大福利视频网| 久草手机在线观看| 欧美精品无码一区二区三区| 亚洲一线在线观看| 性中国xxx极品hd| 电影在线观看一区二区| 亚洲精品喷潮一区二区三区| 欧美国产日韩综合| 侵犯稚嫩小箩莉h文系列小说| www.av在线| 久久久97精品| 日韩精品一区二区三区国语自制| 国产精品视频一区二区图片| 337p日本欧洲亚洲大胆张筱雨| 911国产在线| 蜜桃精品视频在线| 范冰冰一级做a爰片久久毛片| 99精品国产一区二区三区不卡| 一本色道88久久加勒比精品| 成人性生交大片免费观看网站| 亚洲国产精品国自产拍av| 亚洲色精品三区二区一区| 穿情趣内衣被c到高潮视频| 欧美激情亚洲综合一区| 国产v片在线观看| 久久久久国产一区| 国产女人高潮的av毛片| 精品一区二区成人免费视频| 麻豆专区一区二区三区四区五区| 久久久久久久久久久久av| 欧美精品在线一区二区| 国产精品久久久久久av公交车| 亚洲成人影院麻豆| 国产av一区二区三区精品| 国产美女被草| 91动漫在线看| 55av亚洲| 麻豆一区在线| 东方aⅴ免费观看久久av| 91麻豆精品在线观看| 国产黄色一级电影| 无码国产69精品久久久久网站| 日韩欧美aaaaaa| 日本黄色激情视频| 日本 国产 欧美色综合| 日韩综合视频在线观看| 好吊妞视频这里有精品| 日韩午夜小视频| 精品久久久久久久久久久| 你微笑时很美电视剧整集高清不卡| 免费福利视频一区二区三区| 欧美日韩国产中文字幕| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲自拍偷拍麻豆| 天堂视频在线观看免费| 国产盗摄一区二区三区在线| 国产一区二区在线不卡| 圆产精品久久久久久久久久久| 亚洲男人第一av| 成人av激情人伦小说| 久久久久久久av麻豆果冻| 欧美视频在线免费| 99亚洲国产精品| 超碰在线首页| 五月婷婷在线观看| 国产白丝精品91爽爽久久| 五月天丁香在线| 欧美国产精品v| 久久精品人人| 国产精品成人av在线| 亚洲中文字幕无码爆乳av| 亚洲精品国产一区二区精华液| 日韩精品免费视频一区二区三区| 加勒比综合在线| 欧美精选视频一区二区| 日韩黄色成人| www婷婷av久久久影片| 永久免费av在线| 超碰在线国产97| 国产suv一区二区| av午夜电影| 国产精品久久久久影视| 久久99精品这里精品3| 亚洲在线视频| 久久久久久久蜜桃| 精品一区二区三区毛片| 亚洲风情第一页| 视频国产一区二区| 国产91在线视频蝌蚪| 大桥未久av一区二区三区中文| 精品卡1卡2卡三卡免费网站| 欧美午夜在线视频| 国产原创视频在线| 亚洲视频欧美在线| 亚洲电影先锋| 麻豆一区二区99久久久久| 亚洲欧美日韩成人网| 国产91精品露脸国语对白| 国产精品一区二区6| 免费视频一区三区| 韩国av一区二区三区| 一区二区三区黄色| 久久精品在线| 欧美性xxxx18| 日韩在线视频免费观看高清中文| 久久一级大片| 久久久久久久久久久网| 91丨porny丨首页| 欧美另类z0zx974| 国产区精品视频| 日韩有码在线视频| 亚洲一区二区在线免费看| 国产精品偷乱一区二区三区| 亚洲欧美色图片| 少妇欧美激情一区二区三区| 日本不卡不码高清免费观看| 午夜免费电影一区在线观看| 成年人三级网站| 国产51人人成人人人人爽色哟哟| 国产精品电影久久久久电影网| 日本美女久久久| 日韩一区二区三区不卡| 圆产精品久久久久久久久久久| 久久人人99| 成人免费淫片视频软件| 97在线视频观看| 在线观看国产黄| 欧美成年人视频在线观看| 粉嫩av一区二区三区在线播放| 一区二区精品视频| 国产精品二区三区四区| 最新精品国偷自产在线| 久久精品国产亚洲av高清色欲| 免费看av软件| 亚洲黄色高清| 四虎8848精品成人免费网站| 日韩视频一区二区在线观看| 青檬在线电视剧在线观看| thepron国产精品| 91久久黄色| 韩国黄色一级片| 人妻精品一区二区三区| а√天堂8资源中文在线| 久久亚洲精品石原莉奈| 精品欧美黑人一区二区三区| 黄色成人在线网址| 国产精品久久久久久久午夜片| 日韩黄色影院| 午夜视频一区二区在线观看| 二区三区四区高清视频在线观看| 精品视频一区 二区 三区| 国产在线拍偷自揄拍精品| 91tv亚洲精品香蕉国产一区| 亚洲蜜桃精久久久久久久| 中文字幕第五页| 在线不卡日本v二区707| 香蕉视频网站入口| 欧美日韩第一| 高h视频在线观看| 久久综合88| 一区二区三区午夜探花| 欧美国产激情视频| 日韩在线观看一区二区三区| 一区二区国产在线观看| 国产精品无码一区二区三区| 午夜免费福利在线| 日韩av不卡一区二区| 亚洲三级在线观看| 日韩在线a电影| 国产福利一区二区在线精品| 欧美尿孔扩张虐视频| 亚洲 欧美 变态 另类 综合| 日本黄色精品| 亚洲午夜久久久影院| 国产a精品视频| 无码人妻aⅴ一区二区三区玉蒲团| 成人国产在线看| 岛国在线视频| 欧美黄色一区二区| 亚欧视频在线观看| 日韩国产精品91| 国产欧美日韩一区二区三区四区| 国产在线视频福利| 人人妻人人澡人人爽久久av| 亚洲色图视频网站| 欧美在线一二三四区| 国产欧美日韩麻豆91| 韩国v欧美v日本v亚洲v| 久久夜色精品亚洲噜噜国产mv| 性生生活性生交a级| 久久99精品国产自在现线小黄鸭| 免费av一区二区三区四区| 欧美一级特黄a| www激情久久| 国产成人免费视频精品含羞草妖精| 日韩精品一二三四区| eeuss免费天堂影院| 亚洲人成自拍网站| 亚洲国产视频在线观看| 美女黄毛**国产精品啪啪| 国产精品99久久久久久成人| 99自拍偷拍视频| 你懂的在线观看视频网站| 欧美日韩久久一区| 精品国内亚洲在观看18黄| 一本久久综合亚洲鲁鲁| 亚洲欧美在线视频观看| 秋霞av鲁丝片一区二区| 国产精品区一区| 男人天堂久久久| 国产精品永久免费| 91在线免费播放| 97人妻一区二区精品免费视频| 三级视频中文字幕| 四虎国产精品永久在线| 日本激情一区二区| 亚洲综合国产精品| 在线不卡日本| 在线成人www免费观看视频| 国产一级特黄a大片99| 欧美性受xxxx黑人xxxx| 99久久久国产精品免费调教网站| gogogogo高清视频在线| 欧美无砖砖区免费| 性生生活性生交a级| 性网爆门事件集合av| 首页国产欧美日韩丝袜| 亚洲电影av在线| 波多野结衣在线aⅴ中文字幕不卡| 国产精品30p| 日本中文字幕精品—区二区| 欧美成人综合色| 欧美午夜不卡影院在线观看完整版免费| 国产资源中文字幕| 久久久久伊人| 91日本在线观看| 国产人伦精品一区二区| 精品久久久久久久久久久| 国产精品一区二区免费视频| 国产欧美视频一区二区| 天天干视频在线| 亚洲精品自在在线观看| 日韩国产欧美精品在线| 日韩pacopacomama| 欧美一级免费在线| 久久精品国产亚洲av高清色欲| 日韩大尺度黄色| 免费在线成人av电影| 欧美特黄不卡| 污导航在线观看| 国产一级片网站| 国产亚洲精品午夜高清影院| 日韩在线视频免费观看高清中文| 国产视频亚洲精品| 天天爽天天狠久久久| 先锋影音av中文资源| 69精品久久久| 日韩欧美国产片| missav|免费高清av在线看| 日本一区二区免费高清视频| 成人做爰www看视频软件| 国产一区二区三区不卡av| 亚洲精品99久久久久| 日本中文字幕一区二区有限公司| www污污在线| 欧美激情aaa| 日本道免费精品一区二区三区| 亚洲视频在线观看不卡| 男女羞羞在线观看| 成人亚洲欧美日韩在线观看| 国产视频精品久久久| 国产精品午夜在线| 99久久免费国产精品| 免费男女羞羞的视频网站主页在线观看| 成人免费在线观看视频网站| 人禽交欧美网站免费| 色一情一区二区三区| 亚洲精品福利在线观看| 91丨porny丨首页| 色噜噜国产精品视频一区二区| 老太脱裤子让老头玩xxxxx| 婷婷六月国产精品久久不卡| 亚洲高清视频在线播放| 日本老熟俱乐部h0930| 国产精品盗摄一区二区三区| 波多野吉衣中文字幕| 日本免费中文字幕在线| 国产绿帽一区二区三区| 蜜桃av导航| 亚洲国产日韩a在线播放性色| 日日夜夜精品一区| 久久天天综合| 四虎影视最新网站入口在线观看| aaaaa毛片| 色综合久久影院| 福利在线免费| 日日夜夜免费精品视频| 中文字幕精品在线视频| 亚洲国产精品123| h网址在线观看| 国产精品综合久久| 影音先锋2020色资源网| 美国三级日本三级久久99| 欧美黑人欧美精品刺激| 99久久精品国产精品久久| 舐め犯し波多野结衣在线观看| 快播亚洲色图| 黄页在线免费观看| 免费av网站在线播放| 欧洲成人免费视频| 红桃成人av在线播放| 日韩av电影国产|