2015-02-02

居留證號檢驗 PHP version

網路有JAVA、Javascript version的,沒有PHP version,只好自已刻一個...跟檢驗身份證號的方法意思是差不多的。



/*******
居留證號檢驗 PHP version by Duckfly 2014.04.07
param1 = 居留證號
param2 = 是否區分大小寫 (預設false)
********/

function isRCNum($RCNum='', $caseSensitive=false){ 

  $RCNum = trim($RCNum);
  
  //first step
  $pattern = ($caseSensitive)?'/^[A-Z]{1}[A-D]{1}[0-9]{8}$/':'/^[A-Z]{1}[A-D]{1}[0-9]{8}$/i';
  if(preg_match($pattern, $RCNum) == 0) return false;
  
  //second step
  $RCArray = str_split(strtoupper($RCNum));
  $area_str="ABCDEFGHJKLMNPQRSTUVXYWZIO";
  //num1 ~ num2
  $ary12 = str_split(strval(strpos($area_str, $RCArray[0])+10));
  //num3
  $ary3 = array(strpos($area_str, $RCArray[1]) % 10);
  //chechArray (+num4 ~ num11)
  $chechArray = array_merge($ary12, $ary3, array_slice($RCArray, 2));
  //parseInt
  $chechArray = array_map('intval', $chechArray);
  
  //sum
  if(count($chechArray) !== 11) return false;
  
  $sum = $chechArray[0]+$chechArray[10];
  for($i=1;$i<=9;$i++){
  $sum += $chechArray[$i]*(10-$i);
  }
  
  if(($sum % 10) !== 0) return false;
  
  return true;
}

沒有留言:

張貼留言