PHP作為一種非常流行的程式語言,提供了強大的正規表示式功能,可以用來驗證使用者輸入的各種資料格式。其中,身分證號碼的校驗是非常常見的需求,因為身分證號碼是唯一的身分標識,在許多應用場景中都需要進行嚴格的校驗。本文將介紹如何使用PHP正規表示式驗證身分證號碼。
一、取得身分證號碼
在開始驗證身分證號碼之前,我們需要先取得使用者輸入的身分證號碼。可以透過表單提交、API傳參等方式取得,這裡不再贅述。假設我們取得到的身分證號碼為$id_number。
二、身分證號碼的規則
在進行正規表示式校驗之前,我們需要先了解身分證號碼的規則。身分證號碼是由18位數字和字母組成的,在前17位中包含了省、市、縣(區)等訊息,最後一位為校驗碼。具體的規則如下:
1.前1、2位表示:所在省份的行政區劃代碼;
2.第3、4位表示:所在城市的行政區劃代碼;
3.第5、6位表示:所在區(縣)的行政區劃代碼;
#4.第7~14位表示:出生年月日,例如701230表示1970年12月30日;
5.第15~17位表示:所在地的派出所的代碼;
6.第18位為校驗碼,透過前17位計算得出。
根據上述規則,我們可以得到身分證號碼的正規表示式:
/^[1-9]d{5}(19|20)d{2}(( 0[1-9])|(1[0-2]))((0[1-9])|([1-2]d)|(3[0-1]))d{3}[ 0-9xX]$/
下面我們來逐一解析這個正規表示式。
首先,^表示符合字串的起始位置,$表示符合字串的結束位置,這樣就保證了整個字串都符合身分證號碼的規則。
接著,[1-9]d{5}表示身分證號碼的前6位,可以是1~9的任意數字,後面再跟上5位數字。這個其實是省、市、縣(區)的行政區劃代碼。
然後,(19|20)d{2}表示身分證號碼的前8~9位,可以是19或20,後面再跟上2位數字。這表示出生年份。
接下來,((0[1-9])|(1[0-2]))表示身分證號碼的前10~11位,可以是01~12的任意數字,這個表示出生月份。
再然後,((0[1-9])|([1-2]d)|(3[0-1]))表示身分證號碼的前12~13位,可以是01~31的任意數字,這個表示出生日期。
接著,d{3}表示身分證號碼的前14~16位,是所在地的派出所的代碼,可以是任意3個數字。
最後,[0-9xX]表示身分證號碼的最後1位,可以是0~9或x或X,這個是校驗碼。
三、PHP正規表示式的使用
了解了身分證號碼的規則和正規表示式之後,我們就可以使用PHP的preg_match函數來驗證使用者輸入的身分證號碼了。具體用法如下:
$pattern = '/^[1-9]d{5}(19|20)d{2}((0[1-9])|(1[0-2]))((0[1-9])|([1-2]d)|(3[0-1]))d{3}[0-9xX]$/'; if(preg_match($pattern, $id_number)) { echo '身份证号码合法'; } else { echo '身份证号码不合法'; }
以上程式碼中,$pattern是我們剛才定義的正規表示式,$id_number是使用者輸入的身分證號碼。 preg_match函數將透過正規表示式驗證使用者輸入的身分證號碼,並傳回符合結果。如果匹配成功,就輸出“身份證號碼合法”,否則輸出“身份證號碼不合法”。
四、總結
透過本文,我們了解如何使用PHP正規表示式來驗證身分證號碼。身分證號碼的規則雖然比較複雜,但是只要掌握了正規表示式的基本語法和身分證號碼的規則,就可以很容易地實現校驗。在實際應用中,我們也可以根據需要自訂自己的正規表示式,以滿足不同的校驗需求。
以上是PHP正規表示式驗證身分證號碼的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!