導航:首頁 > 專利知識 > php判斷身份證有效期

php判斷身份證有效期

發布時間:2021-01-26 03:35:53

① 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網,檢查身份證是男是女,點提交按鈕的時候跳轉頁面可分辨出

首先先獲取來到身份證號 ,保自存$id_car
$sex = substr($id_car,-2,1);//截取出倒數第二位
if($sex%2 == 0 )
{
echo '女';
}
else
{
echo 『男』
}
具體要怎麼寫還得看你自己

③ PHP判斷是否是身份證號

^

/**
*判斷是否為合法的身份證號碼
*@param$mobile
*@returnint
*/
functionisCreditNo($vStr){
$vCity=array(
'11','12','13','14','15','21','22',
'23','31','32','33','34','35','36',
'37','41','42','43','44','45','46',
'50','51','52','53','54','61','62',
'63','64','65','71','81','82','91'
);
if(!preg_match('/^([d]{17}[xXd]|[d]{15})$/',$vStr))returnfalse;
if(!in_array(substr($vStr,0,2),$vCity))returnfalse;
$vStr=preg_replace('/[xX]$/i','a',$vStr);
$vLength=strlen($vStr);
if($vLength==18){
$vBirthday=substr($vStr,6,4).'-'.substr($vStr,10,2).'-'.substr($vStr,12,2);
}else{
$vBirthday='19'.substr($vStr,6,2).'-'.substr($vStr,8,2).'-'.substr($vStr,10,2);
}
if(date('Y-m-d',strtotime($vBirthday))!=$vBirthday)returnfalse;
if($vLength==18){
$vSum=0;
for($i=17;$i>=0;$i--){
$vSubStr=substr($vStr,17-$i,1);
$vSum+=(pow(2,$i)%11)*(($vSubStr=='a')?10:intval($vSubStr,11));
}
if($vSum%11!=1)returnfalse;
}
returntrue;
}

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

$pattern
=
'/[0-9]{17}([0-9]|X)/';
[0-9]代表0-9中的一個數字,[0-9]{17}代表重復17個數字
([0-9]|X)代表一個數字或者X字元,()代表子表達式,|
代表或者

⑤ 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)$/」,"字元串");

⑥ thinkphp根據身份證怎麼獲取所在地區

方法很多,這里舉出兩種

  1. 通過一些平台介面進行查詢,例:有道身份證查詢這個(版貌似封了),可以自權行網路下

  2. 自建資料庫查詢,原理:身份證號碼的前6位是用來做地區區別碼的,所以只要找到各個地區的區別碼,用正則匹配就可以知道身份證所在地區了

⑦ php身份證驗證有什麼錯

<?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位,最後一位稱為校驗碼

⑧ 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 身份證 正則 檢測是否有效怎麼寫

你的正則表達式的規則錯了。。當然不能執行啦
http://blog.sina.com.cn/s/blog_461c24d50100dtnz.html
這是規則。如果你只是拿來主義,就無視吧。
代碼長篇大論,是對你負責;說真的,網路沒幾個願意自己寫那麼多字的人。我第二程序是自己寫的,試驗過了。可以自動把身份證升級到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;$i<18;++$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;$j<17;$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判斷身份證有效期相關的資料

熱點內容
lol皮膚龍年限定皮膚 瀏覽:370
伊成果之子 瀏覽:791
知識產權出版社副總經理李程 瀏覽:952
馬鞍山精密鑄造 瀏覽:942
愛玩mc怎樣開創造 瀏覽:809
工程質量保證書怎麼寫 瀏覽:259
人創造了文化文化也在塑造著人 瀏覽:164
馬鞍山鄧國支 瀏覽:997
馬鞍山薛宏 瀏覽:3
馬鞍山老倪輔導學校 瀏覽:84
國家公共衛生服務規范第三版考試 瀏覽:740
wapi證書安裝 瀏覽:921
武漢市經濟技術開發區工商局 瀏覽:397
居住區公共服務設施表 瀏覽:982
商丘工商局電話號碼 瀏覽:49
鎮衛生院公共衛生服務考核 瀏覽:334
基本公共衛生服務項目考核方案 瀏覽:104
基本公共衛生服務年終總結簡報 瀏覽:297
究極的妄想發明系列第2 瀏覽:204
Sw的證書 瀏覽:693