PHP實(shí)現(xiàn)15位身份證號(hào)轉(zhuǎn)18位的方法分析
本文實(shí)例講述了PHP實(shí)現(xiàn)15位身份證號(hào)轉(zhuǎn)18位的方法。分享給大家供大家參考,具體如下:
第一代身份證:15位身份證號(hào)碼的意義
1-2位省、自治區(qū)、直轄市代碼;
3-4位地級市、盟、自治州代碼;
5-6位縣、縣級市、區(qū)代碼;
7-12位出生年月日,比如670401代表1967年4月1日,這是和18位號(hào)碼的第一個(gè)區(qū)別;
13-15位為順序號(hào),其中15位男為單數(shù),女為雙數(shù);
與18位身份證號(hào)的第二個(gè)區(qū)別:沒有最后一位的校驗(yàn)碼。
第二代身份證:18位身份證號(hào)碼的意義
①前1、2位數(shù)字表示:所在省份的代碼,河南的省份代碼是41哦!
?、诘?、4位數(shù)字表示:所在城市的代碼;
?、鄣?、6位數(shù)字表示:所在區(qū)縣的代碼;
?、艿?~14位數(shù)字表示:出生年、月、日;
?、莸?5、16位數(shù)字表示:所在地的派出所的代碼;
?、薜?7位數(shù)字表示性別:奇數(shù)表示男性,偶數(shù)表示女性;
?、叩?8位數(shù)字是校檢碼:也有的說是個(gè)人信息碼,一般是隨計(jì)算機(jī)隨機(jī)產(chǎn)生,用來檢驗(yàn)身份證的正確性。校檢碼可以是0~9的數(shù)字,有時(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位,補(bǔ)充為年份,年份最后兩位小于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); //計(jì)算最后一位 //前十七位乘以系數(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ù)映射到對應(yīng)數(shù)字即可 $arrCh = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); $result[17] = $arrCh[$rod]; return implode('',$result); }
參考文章:http://chabaoo.cn/article/172059.htm
PS:這里再為大家推薦一款相似的在線工具供大家參考:
身份證歸屬地信息在線查詢:
http://tools.jb51.net/bianmin/sfz
另外,本站在線工具小程序上也有一款功能更加強(qiáng)大的身份證信息獲取工具,感興趣的朋友可以掃描如下小程序碼查看:
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》及《php正則表達(dá)式用法總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- php驗(yàn)證身份證號(hào)碼正確性的函數(shù)
- php正則判斷是否為合法身份證號(hào)的方法
- PHP 身份證號(hào)驗(yàn)證函數(shù)
- php根據(jù)身份證號(hào)碼計(jì)算年齡的實(shí)例代碼
- php提取身份證號(hào)碼中的生日日期以及驗(yàn)證是否為成年人的函數(shù)
- PHP實(shí)現(xiàn)中國公民身份證號(hào)碼有效性驗(yàn)證示例代碼
- 使用php從身份證號(hào)中獲取一系列線索(星座、生肖、生日等)
- PHP實(shí)現(xiàn)可精確驗(yàn)證身份證號(hào)碼的工具類示例
- php身份證號(hào)碼檢查類實(shí)例
- PHP用身份證號(hào)獲取星座和生肖的方法
- PHP校驗(yàn)15位和18位身份證號(hào)的類封裝
相關(guān)文章
php使用explode()函數(shù)將字符串拆分成數(shù)組的方法
這篇文章主要介紹了php使用explode()函數(shù)將字符串拆分成數(shù)組的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02PHP中運(yùn)用jQuery的Ajax跨域調(diào)用實(shí)現(xiàn)代碼
PHP中運(yùn)用jQuery的Ajax跨域調(diào)用實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-02-02php循環(huán)檢測目錄是否存在并創(chuàng)建(循環(huán)創(chuàng)建目錄)
php循環(huán)檢測目錄是否存在并創(chuàng)建,需要的朋友可以參考下。2011-01-01關(guān)于使用key/value數(shù)據(jù)庫redis和TTSERVER的心得體會(huì)
本篇文章是對使用key/value數(shù)據(jù)庫redis和TTSERVER的心得體會(huì)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06set_include_path在win和linux下的區(qū)別
2008-01-01PHP設(shè)計(jì)模式之委托模式定義與用法簡單示例
這篇文章主要介紹了PHP設(shè)計(jì)模式之委托模式定義與用法,簡單描述了委托模式的功能、定義與簡單使用方法,需要的朋友可以參考下2018-08-08