PHP正規表示式驗證身分證號碼的方法

PHPz
發布: 2023-06-24 16:38:02
原創
2036 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!