php身份證號規則驗證,php身份證簡易驗證

本文目錄一覽:

php 身份證的正則表達式怎麼寫?

$IdCard = “/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i”;

提示 :正則格式: ‘/正則表達式/模式修正符’;

所以 添加 i 是忽略英文字母大小寫的

php的怎麼用身份證號來做帳號判斷代碼

寫了幾個身份證方面的函數,個人感覺挺有用的,特別是在網絡問卷調查時,對個人信息里的身份證進行驗證很有用,但是應者寥寥,還是收在自己的blog里算了。

<?php

// 計算身份證校驗碼,根據國家標準GB 11643-1999

function idcard_verify_number($idcard_base){

 if (strlen($idcard_base) != 17){ return false; }

 // 加權因子

 $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

 // 校驗碼對應值

 $verify_number_list = array(’1’, ’0’, ’X’, ’9’, ’8’, ’7’, ’6’, ’5’, ’4’, ’3’, ’2’);

 $checksum = 0;

 for ($i = 0; $i < strlen($idcard_base); $i++){

$checksum += substr($idcard_base, $i, 1) * $factor[$i];

 }

 $mod = $checksum % 11;

 $verify_number = $verify_number_list[$mod];

 return $verify_number;

}

// 將15位身份證升級到18位

function idcard_15to18($idcard){

 if (strlen($idcard) != 15){

return false;

 }else{

// 如果身份證順序碼是996 997 998 999,這些是為百歲以上老人的特殊編碼

if (array_search(substr($idcard, 12, 3), array(’996’, ’997’, ’998’, ’999’)) !== false){

 $idcard = substr($idcard, 0, 6) . ’18’. substr($idcard, 6, 9);

}else{

 $idcard = substr($idcard, 0, 6) . ’19’. substr($idcard, 6, 9);

}

 }

 $idcard = $idcard . idcard_verify_number($idcard);

 return $idcard;

}

// 18位身份證校驗碼有效性檢查

function idcard_checksum18($idcard){

 if (strlen($idcard) != 18){ return false; }

 $idcard_base = substr($idcard, 0, 17);

 if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){

return false;

 }else{

return true;

 }

}

?>

其中的$idcard_base是指身份證中的本位碼,本位碼是18位身份證里才有的,也就是18位身份證的前17位,最後一位稱為校驗碼

一般在使用的時候不用直接調用idcard_verify_number(),平時的應用大多是使用後兩個函數,這些函數都沒有關心身份證字符串的格式問題,在調用前自行進行格式檢查。

驗證身份證號碼的正確正則表達式

驗證身份證號碼的正確正則表達式 /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

function isCardNo(card) 

{

// 身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字符X 

var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;

if(reg.test(card) === false)

{

alert(“身份證輸入不合法”);

return  false;

擴展資料:

正則表達式的書寫語法

1、^  表示匹配字符串的開始位置  (例外  用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)

2、$  表示匹配字符串的結束位置

3、*  表示匹配 零次到多次

4、+  表示匹配 一次到多次 (至少有一次)

5、?  表示匹配零次或一次

6、.  表示匹配單個字符

7、|  表示為或者,兩項中取一項

8、(  ) 小括號表示匹配括號中全部字符

9、[  ] 中括號表示匹配括號中一個字符 範圍描述 如[0-9 a-z A-Z]

10、{  } 大括號用於限定匹配次數  如 {n}表示匹配n個字符  {n,}表示至少匹配n個字符  {n,m}表示至少n,最多m

11、\  轉義字符 如上基本符號匹配都需要轉義字符   如 \*  表示匹配*號

12、\w 表示英文字母和數字  \W  非字母和數字

13、\d  表示數字   \D  非數字

參考鏈接來源:百度百科-正則表達式

PHP 做的後台,如何“實名驗證”

實名認證牽涉公安備案系統,請想公安機關申請接口進行驗證。

否則只能用身份證生成規則進行驗證,但是這樣驗證不是百分之百準確的

以下附上PHP 身份證規則驗證代碼

/*/

# CopyRight: zxing

# Document: 檢查符合 GB11643-1999 標準的身份證號碼的正確性

# File:gb11643_1999.func.php Fri Mar 28 09:42:41 CST 2008 zxing

# Updated:Fri Mar 28 09:42:41 CST 2008

# Note: 調用函數 check_id();

#/*///

$id =array();

$id[] = ‘370882198601064774’;

$id[] = ‘420502198611281126’;

$id[] = ‘370882198601064770’;

$id[] = ‘370882860106477’;

$id[] = ‘63212519850703214x’;

$id[] = ‘429021198203221006’;

$id[] = ‘429036198203211023’;

foreach ($id as $key = $value){

echo check_id($value)?$value.’ 是真的!br/’: $value.’ 是假的!br/’;

}

#/*/

/*/

# 函數功能:計算身份證號碼中的檢校碼

# 函數名稱:idcard_verify_number

# 參數表 :string $idcard_base 身份證號碼的前十七位

# 返回值 :string 檢校碼

# 更新時間:Fri Mar 28 09:50:19 CST 2008

/*/

function idcard_verify_number($idcard_base){

if (strlen($idcard_base) != 17){

   return false;

}

    $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //debug 加權因子

    $verify_number_list = array(‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’); //debug 校驗碼對應值

    $checksum = 0;

    for ($i = 0; $i  strlen($idcard_base); $i++){

        $checksum += substr($idcard_base, $i, 1) * $factor[$i];

    }

    $mod = $checksum % 11;

    $verify_number = $verify_number_list[$mod];

    return $verify_number;

}

/*/

# 函數功能:將15位身份證升級到18位

# 函數名稱:idcard_15to18

# 參數表 :string $idcard 十五位身份證號碼

# 返回值 :string

# 更新時間:Fri Mar 28 09:49:13 CST 2008

/*/

function idcard_15to18($idcard){

    if (strlen($idcard) != 15){

        return false;

    }else{// 如果身份證順序碼是996 997 998 999,這些是為百歲以上老人的特殊編碼

        if (array_search(substr($idcard, 12, 3), array(‘996’, ‘997’, ‘998’, ‘999’)) !== false){

            $idcard = substr($idcard, 0, 6) . ’18’. substr($idcard, 6, 9);

        }else{

            $idcard = substr($idcard, 0, 6) . ’19’. substr($idcard, 6, 9);

        }

    }

    $idcard = $idcard . idcard_verify_number($idcard);

    return $idcard;

}

/*/

# 函數功能:18位身份證校驗碼有效性檢查

# 函數名稱:idcard_checksum18

# 參數表 :string $idcard 十八位身份證號碼

# 返回值 :bool

# 更新時間:Fri Mar 28 09:48:36 CST 2008

/*/

function idcard_checksum18($idcard){

    if (strlen($idcard) != 18){ return false; }

    $idcard_base = substr($idcard, 0, 17);

    if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){

        return false;

    }else{

        return true;

    }

}

/*/

# 函數功能:身份證號碼檢查接口函數

# 函數名稱:check_id

# 參數表 :string $idcard 身份證號碼

# 返回值 :bool 是否正確

# 更新時間:Fri Mar 28 09:47:43 CST 2008

/*/

function check_id($idcard) {

if(strlen($idcard) == 15 || strlen($idcard) == 18){

   if(strlen($idcard) == 15){

    $idcard = idcard_15to18($idcard);

   }

   if(idcard_checksum18($idcard)){

    return true;

   }else{

    return false;

   }

}else{

   return false;

}

}

php 檢查字符串中是否存在身份證號

15位數身份證驗證正則表達式:

$sfzh=preg_match(“/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/

”,”字符串”);

$sfzh=preg_match(“/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/”,”字符串”);

PHP正則表達式驗證身份證號格式是否正確

//身份證正則表達式(15位)

$isIDCard1=”/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/”;

//身份證正則表達式(18位)

$isIDCard2=”/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/”;

只給出規則,函數自己寫

原創文章,作者:ORNA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/143973.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ORNA的頭像ORNA
上一篇 2024-10-24 15:26
下一篇 2024-10-24 15:26

相關推薦

  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 解析URI編碼規則

    URI(統一資源標識符)是用來標識互聯網上資源的字符串文本標識符,是訪問互聯網資源的地址。在將URI傳送到服務器或瀏覽器時,需要進行特定編碼處理,這個編碼方式就是URI編碼規則。 …

    編程 2025-04-28
  • Python編寫規則用法介紹

    Python作為一種廣泛使用的高級編程語言,其編寫規則的規範性對於提高代碼可讀性、美觀度以及方便調試、維護至關重要。本文將從命名規則、注釋規則、代碼縮進等多個方面進行詳細的闡述,希…

    編程 2025-04-28
  • Python縮進規則用法介紹

    本文將從多個方面對Python的縮進規則進行詳細的闡述。 一、規則解答 Python中縮進是語法的一部分,它決定了程序的結構和邏輯。Python縮進規則要求同一層級的代碼必須保持相…

    編程 2025-04-28
  • Python簡易電話簿系統

    本篇文章將為您介紹如何使用Python語言創建一個簡易電話簿系統。電話簿系統是一種十分實用的工具,可以幫助人們記錄並管理自己的聯繫人信息。我們將通過多個方面詳細闡述Python簡易…

    編程 2025-04-27
  • Python製作簡易計算器

    本文將從多個方面,詳細闡述如何使用Python製作簡易計算器。 一、GUI界面設計 要製作一個簡易計算器,我們需要先計劃好它的GUI界面,以方便用戶的使用。在Python中,我們可…

    編程 2025-04-27
  • Python輸入身份證判斷地區

    在Python中,我們可以通過簡單的代碼來驗證身份證號碼的合法性,同時也可以從中提取出身份證所屬的地區信息。 一、驗證身份證號碼的合法性 身份證號碼是一個18位的字符串,其中最後一…

    編程 2025-04-27
  • LL(1)語法分析器:從語法規則到語法樹

    在編譯原理中,語法分析是編譯器的一個重要階段。語法分析器的作用是將代碼轉換成語法樹,以便後續階段進行處理。LL(1)語法分析器是語法分析器的一種,它採用的是自頂向下的分析方法,可以…

    編程 2025-04-25
  • 身份證轉換

    身份證轉換是指將15位身份證號碼轉換成18位身份證號碼的一種操作。身份證是中國公民證明身份的重要證件,而目前大多數機構需要使用18位身份證號碼進行識別和驗證。下面將會從多個方面闡述…

    編程 2025-04-23
  • makefile編寫規則詳解

    一、目標、依賴和命令 makefile中最基本的幾個構成部分就是目標、依賴和命令。目標是我們要生成的文件,依賴是生成目標所需要的文件或者其他目標,命令則是生成目標的具體步驟。 ta…

    編程 2025-04-23

發表回復

登錄後才能評論