php中身份證號的驗證函數(php中身份證號的驗證函數是什麼)

本文目錄一覽:

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}$/”;

只給出規則,函數自己寫

php 身份證 正則 檢測是否有效怎麼寫?

你的正則表達式的規則錯了。。當然不能執行啦

這是規則。如果你只是拿來主義,就無視吧。

代碼長篇大論,是對你負責;說真的,百度沒幾個願意自己寫那麼多字的人。我第二程序是自己寫的,試驗過了。可以自動把身份證升級到18位,然後驗證。

正則表達式其實是來自數學的概念,後來加入了編程語言。正則表達式驗證身份證簡單,但是有缺點,你的要求是:驗證出身年月日,很可惜,正則沒辦法驗證的太完善。也就是說只要符合規則就是正確(比如19940939之類的出生年月。。。),所以寫程序就是為了完善它。話說多了= =不採納也沒辦法。我自認為我比樓上的好多了。

?php

$s15=”/^[0-9]{15}$/”;

//15位正則表達式

$s18=”/^[0-9]{6}[1]{1}[9]{1}[0-9]{2}[0-1]{1}[0-9]{1}[0-3]{1}[0-9]{1}[0-9]{3}[0-9X]{1}$/”;

//18位正則表達式

$sid=”18位或者15位身份證”;

if(preg_match($s15,$sid) or preg_match($s18,$sid))

//如果滿足這兩個條件的其中一個,輸出echo

echo ‘ok’;

else

echo ‘no’;

?

簡單不好用,我花了一個小時寫了一個15位轉18位然後自動驗證的函數:

?php

function check($sid)

{

if(strlen($sid)== 15)

//如果是15身份證,進入自動轉換程序,把15位升級到18位

{

$wi=array(‘7′,’9′,’10’,’5′,’8′,’4′,’2′,’1′,’6′,’3′,’7′,’9′,’10’,’5′,’8′,’4′,’2′,’1′);

$sid=substr_replace($sid,19,6,0);

$count=array();

for($i=0;$i18;++$i)

{

@$count[$i]=$sid[$i]*$wi[$i];

}

$sum=array_sum($count)%11;

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

$sid=substr_replace($sid,$zuihou[$sum],17,0);

//這個sid是18位的。= = 不信你拿自己的身份證(15位)放過來試驗,肯定沒錯。

}

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

$sum2=array();

for($j=0;$j17;$j++)

{

$sum2[$j]=$sid[$j]*$wi18[$j];

}

$sum2=array_sum($sum2)%11;

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

if($yz[$sum2] == $sid[17])

//如果最後一位和驗證號一樣,則返回真

return true;

else

return false;

}

$sid=”18位或者15位身份證”;

if(check($sid))

echo ‘是正確的身份證’;

else

echo ‘身份證不正確’;

?

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(),平時的應用大多是使用後兩個函數,這些函數都沒有關心身份證字符串的格式問題,在調用前自行進行格式檢查。

求助,關於輸入身份證號碼獲得生日和性別的PHP函數

$

身份證號

=

”;

$生日

=

strlen($身份證號)==15

?

(’19’

.

substr($身份證號,

6,

6))

:

substr($身份證號,

6,

8);

$性別

=

substr($身份證號,

(strlen($身份證號)==15

?

-2

:

-1),

1)

%

2

?

‘男’

:

‘女’;

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BZJX7的頭像BZJX7
上一篇 2024-10-03 23:16
下一篇 2024-10-03 23:16

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29

發表回復

登錄後才能評論