gpt4 book ai didi

PHP实现15位身份证号转18位的方法分析

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP实现15位身份证号转18位的方法分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了PHP实现15位身份证号转18位的方法。分享给大家供大家参考,具体如下:

第一代身份证:15位身份证号码的意义 。

1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别; 13-15位为顺序号,其中15位男为单数,女为双数; 与18位身份证号的第二个区别:没有最后一位的校验码.

第二代身份证:18位身份证号码的意义 。

  ①前1、2位数字表示:所在省份的代码,河南的省份代码是41哦!   ②第3、4位数字表示:所在城市的代码;   ③第5、6位数字表示:所在区县的代码;   ④第7~14位数字表示:出生年、月、日;   ⑤第15、16位数字表示:所在地的派出所的代码;   ⑥第17位数字表示性别:奇数表示男性,偶数表示女性;   ⑦第18位数字是校检码:也有的说是个人信息码,一般是随计算机随机产生,用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示.

代码示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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位的年份是两位数,18位的是4位数,留出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 );
   //计算最后一位
   //前十七位乘以系数[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求余,的余数 0 - 10
   $rod = $sum % 11;
   //所得余数映射到对应数字即可
   $arrCh = array ( '1' , '0' , 'X' , '9' , '8' , '7' , '6' , '5' , '4' , '3' , '2' );
   $result [17] = $arrCh [ $rod ];
   return implode( '' , $result );
}
 

希望本文所述对大家PHP程序设计有所帮助.

原文链接:https://www.cnblogs.com/gyfluck/p/10974973.html 。

最后此篇关于PHP实现15位身份证号转18位的方法分析的文章就讲到这里了,如果你想了解更多关于PHP实现15位身份证号转18位的方法分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com