當前位置 主頁 > 網站技術 > 代碼類 > 最大化 縮小

    PHP實現15位身份證號轉18位的方法分析

    欄目:代碼類 時間:2019-10-16 12:09

    本文實例講述了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表示。

    代碼示例:

    <?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);
    }
    
    

    參考文章:https://www.jb51.net/article/172059.htm

    PS:這里再為大家推薦一款相似的在線工具供大家參考:

    身份證歸屬地信息在線查詢:
    http://tools.jb51.net/bianmin/sfz

    另外,本站在線工具小程序上也有一款功能更加強大的身份證信息獲取工具,感興趣的朋友可以掃描如下小程序碼查看:

    更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數學運算技巧總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP數據結構與算法教程》、《php程序設計算法總結》及《php正則表達式用法總結》

    希望本文所述對大家PHP程序設計有所幫助。

在线观看中文字幕理论片