摘要:校驗位按照的規(guī)定生成,可以認為是數(shù)字。如果你只需要簡單的校驗身份證號碼的話,你只需要使用我上面的正則規(guī)則進行校驗即可,如果需要嚴格校驗的話,可以使用我上面的驗證方法來進行校驗
最近公司讓我將身份證校驗改為嚴格校驗,剛開始我使用了網(wǎng)上找到的身份證正則校驗進行校驗:
/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$/
但是,老板說這個校驗沒有進行嚴格的身份證校驗,這個校驗只校驗了身份證的格式是否正確,無法判斷身份證號碼格式是否正確
下面為嚴格校驗身份證號碼的校驗方法:
/** * function: checkNum * author: wangjian * date: 2019/4/16 15:21 * 檢測身份證號是否正確 */ function checkNum($num_id) { $num_id = strtoupper($num_id); $regx = "/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$/"; $arr_split = array(); if(!preg_match($regx, $num_id)) { return FALSE;//正則校驗 } if(15==strlen($num_id)) //檢查15位 { $regx = "/^(d{6})+(d{2})+(d{2})+(d{2})+(d{3})$/"; @preg_match($regx, $num_id, $arr_split); //檢查生日日期是否正確 $dtm_birth = "19".$arr_split[2] . "/" . $arr_split[3]. "/" .$arr_split[4]; if(!strtotime($dtm_birth)) { return FALSE; } else { return TRUE; } } else //檢查18位 { $regx = "/^(d{6})+(d{4})+(d{2})+(d{2})+(d{3})([0-9]|X)$/"; @preg_match($regx, $num_id, $arr_split); $dtm_birth = $arr_split[2] . "/" . $arr_split[3]. "/" .$arr_split[4]; if(!strtotime($dtm_birth)) //檢查生日日期是否正確 { return FALSE; } else { //檢驗18位身份證的校驗碼是否正確。 //校驗位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認為是數(shù)字10。 $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); $arr_ch = array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); $sign = 0; for ( $i = 0; $i < 17; $i++ ) { $b = (int) $num_id{$i}; $w = $arr_int[$i]; $sign += $b * $w; } $n = $sign % 11; $val_num = $arr_ch[$n]; if ($val_num != substr($num_id,17, 1)) { return FALSE; } else { return TRUE; } } } }
如果你只需要簡單的校驗身份證號碼的話,你只需要使用我上面的正則規(guī)則進行校驗即可,如果需要嚴格校驗的話,可以使用我上面的驗證方法來進行校驗
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/31280.html
摘要:現(xiàn)在我就用框架來進行實戰(zhàn)下在實際業(yè)務中是如何優(yōu)雅的使用異常的場景描述選擇一個比較簡單的業(yè)務場景,以登錄模塊為例,用戶在移動端進行登錄時,需要進行登錄,注冊,忘記密碼,獲取手機驗證碼等接口。 前言 剛開始接觸PHP的時候沒有意識到異常的重要性,有時候出問題很難精確的找到問題點,正確的處理異常也是一門學問 異常的類別 PHP7異常做了很多變動,異常類 Exception 和錯誤類 Erro...
摘要:個人網(wǎng)站最近剛寫了一個手機在線播放的電影站使用日常手記更新使用的的查詢作用域的本地作用域去自定義可復用的約束集合,方便鏈式調用什么是本地查詢作用域本地作用域允許我們定義通用的約束集合以便在應用中復用。 關于作者 程序開發(fā)人員,不拘泥于語言與技術,目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個人網(wǎng)站:...
摘要:支持短信驗證碼未驗證時,用戶再次請求驗證碼,在有效分鐘內(nèi)驗證碼保持一致。集成短信發(fā)送路由,支持和發(fā)送方式。有效期為分鐘,請盡快驗證。 Laravel Sms Laravel 貼合實際需求同時滿足多種通道的短信發(fā)送組件 showImg(https://segmentfault.com/img/remote/1460000013101233);showImg(https://segment...
摘要:需求場景發(fā)送驗證碼或者消息通知,可發(fā)送到手機或郵箱中。完成首先,在中的規(guī)范就是使用的消息通知,這里基于場景為驗證碼。所以我們在驗證碼模型中添加是完全符合通知的正確使用的。 順便發(fā)個小通知:7月15日ThinkSNS+開源版發(fā)布,同時非開源的APP也走出內(nèi)測階段,體驗二維碼也全面發(fā)布體驗。 什么是ThinkSNS ? ThinkSNS(簡稱TS),一款全平臺綜合性社交系統(tǒng),為國內(nèi)外大中小...
閱讀 3396·2021-11-24 09:38
閱讀 1392·2021-11-22 15:08
閱讀 1468·2021-09-29 09:35
閱讀 485·2021-09-02 15:11
閱讀 1310·2019-08-30 12:55
閱讀 392·2019-08-29 17:16
閱讀 498·2019-08-29 11:30
閱讀 423·2019-08-26 13:23