외국인 등록 번호 체크 루틴. 새로운 것

less than 1 minute read

JS는 네이버 소스, PHP는 JS를 PHP로 바꾼 것.

JS

// 외국인 등록번호 (20120703)

 function isForeSSN(socno)
 {
  var total =0;
  var parity = 0;
  var fgnNo = new Array(13);
  for(i=0;i < 13;i++) fgnNo[i] = parseInt(socno.charAt(i));

 // if(fgnNo[11] < 6) return false; //<—- 이부분 때문에 에러가나는 경우가 있을 것이다.(과거에는 체크해야하지만, 지금은 체크하면 안된다.

  if((parity = fgnNo[7]*10 + fgnNo[8])&1) return false;
  var weight = 2;
  for(i=0,total=0;i < 12;i++)
  {
   var sum = fgnNo[i] * weight;
   total += sum;
   if(++weight > 9) weight=2;
  }
  if((total = 11 - (total%11)) >= 10) total -= 10;
  if((total += 2) >= 10) total -= 10;
  if(total != fgnNo[12]) return false;
  return true;
 }

 

#PHP

 // 외국인 등록번호
  function  isForeSSN ($socno)
  {
   $total =0;
   $parity = 0;
   $fgnNo = array();
  for($i=0;$i < 13;$i++) $fgnNo[] = (int)$socno[$i];

  // if($fgnNo[11] < 6) return false;//<—- 이부분 때문에 에러가나는 경우가 있을 것이다.(과거에는 체크해야하지만, 지금은 체크하면 안된다.

   if(($parity = $fgnNo[7]*10 + $fgnNo[8])&1) return false;
   $weight = 2;
   for($i=0,$total=0;$i < 12;$i++)
   {
    $sum = $fgnNo[$i] * $weight;
    $total += $sum;
    if(++$weight > 9) $weight=2;
   }
   if(($total = 11 - ($total%11)) >= 10) $total -= 10;
   if(($total += 2) >= 10) $total -= 10;
   if($total != $fgnNo[12]) return false;
   return true;
  }


🔗original-link

Updated: