萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP 驗證身份證是否合法的函數

PHP 驗證身份證是否合法的函數

小編推薦的這篇文章介紹了PHP 驗證身份證是否合法的函數,非常實用,有興趣的同學可以參考一下本文。

 

 代碼如下復制代碼

functionis_idcard($id)

{

  $id=strtoupper($id);

  $regx="/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";

  $arr_split=array();

  if(!preg_match($regx,$id))

  {

    returnFALSE;

  }

  if(15==strlen($id))//檢查15位

  {

    $regx="/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";

    @preg_match($regx,$id,$arr_split);

    //檢查生日日期是否正確

    $dtm_birth="19".$arr_split[2] .'/'.$arr_split[3].'/'.$arr_split[4];

    if(!strtotime($dtm_birth))

    {

      returnFALSE;

    }

    else

    {

      returnTRUE;

    }

  }

  else//檢查18位

  {

    $regx="/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";

    @preg_match($regx,$id,$arr_split);

    $dtm_birth=$arr_split[2] .'/'.$arr_split[3].'/'.$arr_split[4];

    if(!strtotime($dtm_birth))//檢查生日日期是否正確

    {

      returnFALSE;

    }

    else

    {

      //檢驗18位身份證的校驗碼是否正確。

      //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。

      $arr_int=array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

      $arr_ch=array(Ƈ',Ɔ','X',Ə',Ǝ',ƍ',ƌ',Ƌ',Ɗ',Ɖ',ƈ');

      $sign= 0;

      for($i= 0;$i< 17;$i++ )

      {

        $b= (int)$id{$i};

        $w=$arr_int[$i];

        $sign+=$b*$w;

      }

      $n=$sign% 11;

      $val_num=$arr_ch[$n];

      if($val_num!=substr($id,17, 1))

      {

        returnFALSE;

      }

      else

      {

        returnTRUE;

      }

    }

  }

}

 

copyright © 萬盛學電腦網 all rights reserved