PHP實現(xiàn)15位身份證號轉18位的方法分析
本文實例講述了PHP實現(xiàn)15位身份證號轉18位的方法。分享給大家供大家參考,具體如下:
第一代身份證:15位身份證號碼的意義
1-2位省、自治區(qū)、直轄市代碼;
3-4位地級市、盟、自治州代碼;
5-6位縣、縣級市、區(qū)代碼;
7-12位出生年月日,比如670401代表1967年4月1日,這是和18位號碼的第一個區(qū)別;
13-15位為順序號,其中15位男為單數(shù),女為雙數(shù);
與18位身份證號的第二個區(qū)別:沒有最后一位的校驗碼。
第二代身份證:18位身份證號碼的意義
?、偾?、2位數(shù)字表示:所在省份的代碼,河南的省份代碼是41哦!
?、诘?、4位數(shù)字表示:所在城市的代碼;
?、鄣?、6位數(shù)字表示:所在區(qū)縣的代碼;
?、艿?~14位數(shù)字表示:出生年、月、日;
?、莸?5、16位數(shù)字表示:所在地的派出所的代碼;
?、薜?7位數(shù)字表示性別:奇數(shù)表示男性,偶數(shù)表示女性;
?、叩?8位數(shù)字是校檢碼:也有的說是個人信息碼,一般是隨計算機隨機產(chǎn)生,用來檢驗身份證的正確性。校檢碼可以是0~9的數(shù)字,有時也用x表示。
代碼示例:
<?php
function CardId15To18($card){
$len = strlen($card);
if($len == 18){
return $card;
}else if($len != 15){
return false;
}
$result = array();
for($i=0;$i<$len;$i++){
if($i<=5){
$result[$i] = intval($card[$i]);
}else{
//15位的年份是兩位數(shù),18位的是4位數(shù),留出2位
$result[$i+2] = intval($card[$i]);
}
}
//留出的2位,補充為年份,年份最后兩位小于17,年份為20XX,否則為19XX
if(intval(substr($card,6,2)) <= 17){
$result[6] = 2;
$result[7] = 0;
}else{
$result[6] = 1;
$result[7] = 9;
}
ksort($result);
//計算最后一位
//前十七位乘以系數(shù)[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],
$arrInt = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$sum = 0;
for($i=0;$i<17;$i++){
$sum += $result[$i] * $arrInt[$i];
}
//對11求余,的余數(shù) 0 - 10
$rod = $sum % 11;
//所得余數(shù)映射到對應數(shù)字即可
$arrCh = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$result[17] = $arrCh[$rod];
return implode('',$result);
}
參考文章:http://www.dbjr.com.cn/article/172059.htm
PS:這里再為大家推薦一款相似的在線工具供大家參考:
身份證歸屬地信息在線查詢:
http://tools.jb51.net/bianmin/sfz
另外,本站在線工具小程序上也有一款功能更加強大的身份證信息獲取工具,感興趣的朋友可以掃描如下小程序碼查看:

更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學運算技巧總結》、《php字符串(string)用法總結》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)據(jù)結構與算法教程》、《php程序設計算法總結》及《php正則表達式用法總結》
希望本文所述對大家PHP程序設計有所幫助。
相關文章
php使用explode()函數(shù)將字符串拆分成數(shù)組的方法
這篇文章主要介紹了php使用explode()函數(shù)將字符串拆分成數(shù)組的方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02
PHP中運用jQuery的Ajax跨域調(diào)用實現(xiàn)代碼
PHP中運用jQuery的Ajax跨域調(diào)用實現(xiàn)代碼,需要的朋友可以參考下2012-02-02
php循環(huán)檢測目錄是否存在并創(chuàng)建(循環(huán)創(chuàng)建目錄)
php循環(huán)檢測目錄是否存在并創(chuàng)建,需要的朋友可以參考下。2011-01-01
關于使用key/value數(shù)據(jù)庫redis和TTSERVER的心得體會
本篇文章是對使用key/value數(shù)據(jù)庫redis和TTSERVER的心得體會進行了詳細的分析介紹,需要的朋友參考下2013-06-06
set_include_path在win和linux下的區(qū)別
2008-01-01

