15자리에서 18자리 ID 번호로 변환을 실현하고 중국 본토 주민 ID 카드, 홍콩 주민 ID 카드, 마카오 ID 카드 및 대만 ID 카드를 확인하세요.
- /**
- * 신분증 도구 강좌
- *
- * @author Tongle Xu 2013-6-6
- * @copyright Copyright (c) 2003-2103tintsoft.com
- * @license http://www.tintsoft.com
- * @version $Id$
- */
- class Utils_Idcard {
- /**
- * 중국 주민등록번호의 최소 길이입니다.
- */
- const CHINA_ID_MIN_LENGTH = 15;
-
- /**
- * 중국 주민등록번호의 최대 길이입니다.
- */
- const CHINA_ID_MAX_LENGTH = 18;
-
- /**
- * 최소 연도
- */
- const MIN = 1930;
-
- /**
- *지방 및 자치단체 코드표
- */
- public static $cityCode = 배열 ("11","12","13","14","15","21","22","23","31","32"," 33","34","35","36","37","41","42","43","44","45","46","50","51" ,"52","53","54","61","62","63","64","65","71","81","82","91" );
-
- /**
- * 비트별 가중치 인자
- */
- public static $power = 배열 (7,9,10,5,8,4,2,1,6,3,7,9,10, 5,8,4,2 );
-
- /**
- * 18자리 체크코드
- */
- public static $verifyCode = 배열 ("1","0","X","9"," 8","7","6","5","4","3","2" );
- /**
- * 국내 신분증 확인
- */
- public static $cityCodes = array (' 11' => '북쿄' );
-
- /**
- * 15자리 ID번호를 18자리로 변환
- *
- * @param idCard 15자리 식별코드
- * @return 18자리 식별코드
- */
- 공개 정적 함수 conver15CardTo18($idCard) {
- $idCard18 = "";
- if ( strlen ( $idCard ) != self::CHINA_ID_MIN_LENGTH) {
- return null;
- }
- if (self::isNum ( $idCard )) {
- // 获取出生年月日
- $sYear = '19' . substr( $idCard, 6, 2 );
- $idCard18 = substr( $idCard, 0, 6 ) . $s년. substr ( $idCard, 8 );
- // 转换字符数组
- $iArr = str_split ( $idCard18 );
- if ($iArr != null) {
- $iSum17 = self::getPowerSum ( $iArr );
- // 获取校验位
- $sVal = self::getCheckCode18 ( $iSum17 );
- if (strlen ( $sVal ) > 0) {
- $idCard18 . = $sVal;
- } else {
- null 반환;
- }
- }
- } else {
- null 반환;
- }
- $idCard18 반환;
- }
-
- /**
- * 신분증이 유효한지 확인하세요
- */
- 공개 정적 함수 verifyCard($idCard) {
- $card = 트림( $idCard );
- if(self::validateIdCard18( $ 카드 )) {
- true 반환;
- }
- if (self::validateIdCard15 ( $card )) {
- true 반환;
- }
- false 반환;
- }
-
- /**
- * 18자리 식별 코드가 유효한지 확인
- *
- * @param int $idCard 식별 코드
- * @return boolean 합법 여부
- */
- 공개 정적 함수 verifyIdCard18($idCard) {
- $bTrue = false;
- if (strlen ( $idCard ) == self::CHINA_ID_MAX_LENGTH) {
- // 이전17位
- $code17 = substr ( $idCard, 0, 17 );
- // 第18位
- $code18 = substr ( $idCard, 17, 1 );
- if (self::isNum ( $code17 )) {
- $iArr = str_split ( $code17 );
- if ($iArr != null) {
- $iSum17 = self::getPowerSum ( $ iArr );
- // 获取校验位
- $val = self::getCheckCode18 ( $iSum17 );
- if (strlen ( $val ) > 0 && $val == $code18) {
- $bTrue = true;
- }
- }
- }
- }
- return $bTrue;
- }
-
- /**
- * 15자리 식별 코드가 적법한지 확인
- *
- * @param string $idCard 식별 코드
- * @return boolean 적법 여부
- */
- public static function verifyIdCard15($idCard) {
- if (strlen ( $idCard ) != self::CHINA_ID_MIN_LENGTH) {
- return false;
- }
- if (self::isNum ( $idCard )) {
- $proCode = substr ( $idCard, 0, 2 );
- if (! isset ( self::$cityCodes [$proCode] )) {
- return false;
- }
- //升到18位
- $idCard = self::conver15CardTo18($idCard);
- return self::validateIdCard18($idCard);
- } else {
- false 반환;
- }
- true 반환;
- }
-
- /**
- * ID 번호를 기준으로 나이 가져오기
- *
- * @param string idCard ID 번호
- * @return age
- */
- 공개 정적 함수 getAgeByIdCard($idCard) {
- $iAge = 0;
- if (strlen ( $idCard ) == self::CHINA_ID_MIN_LENGTH) {
- $idCard = self::conver15CardTo18 ( $idCard );
- }
- $year = substr( $idCard, 6, 4 );
- $iCurrYear = 날짜( 'Y', 시간() );
- $iAge = $iCurrYear - $year;
- return $iAge;
- }
-
- /**
- * ID 번호를 기준으로 생일 가져오기
- *
- * @param string $idCard ID 번호
- * @return NULL 문자열
- */
- 공개 정적 함수 getDateByIdCard($idCard) {
- $len = strlen ( $idCard );
- if ($len < self::CHINA_ID_MIN_LENGTH) {
- return null;
- } else if ($len == CHINA_ID_MIN_LENGTH) {
- $idCard = self::conver15CardTo18 ( $idCard );
- }
- return substr ( $idCard, 12, 2 );
- }
- /**
- * ID 번호를 기준으로 성별 가져오기
- *
- * @param string $idCard ID 번호
- * @return 성별(M-남성, F-여성, N-알 수 없음)
- */
- 공개 정적 함수 getGenderByIdCard($idCard) {
- $sGender = "N";
- if (strlen ( $idCard ) == self: :CHINA_ID_MIN_LENGTH) {
- $idCard = self::conver15CardTo18 ( $idCard );
- }
- $sCardNum = substr ( $idCard, 16, 1 );
- if (( int ) $sCardNum % 2 != 0) {
- $sGender = "M";
- } else {
- $sGender = "F";
- }
- return $sGender;
- }
-
- /**
- * 주민등록번호를 기준으로 호적도 구하기
- *
- * @param string $idCard 주민등록번호
- * @return string
- */
- 공개 정적 함수 getProvinceByIdCard($idCard) {
- $len = strlen( $idCard );
- $sProvince = null;
- $sProvinNum = " ";
- if ($len == self::CHINA_ID_MIN_LENGTH || $len == self::CHINA_ID_MAX_LENGTH) {
- $sProvinNum = substr ( $idCard, 0, 2 );
- }
- $sProvince = self::$cityCodes [$sProvinNum];
- return $sProvince;
- }
- /**
- * 숫자 검증
- *
- * @param int $val
- */
- 공개 정적 함수 isNum($val) {
- $val == null || $val == "" ? 거짓: 0 < preg_match ( '/^[0-9]*$/', $val );
- }
- /**
- * 날짜가 현재 날짜보다 작을 경우 유효한지 확인
- *
- * @param int $iYear 확인할 날짜(연도)
- * @param int $iMonth 확인할 날짜 확인(1~12월)
- * @param int $iDate 확인 날짜(일)
- * @return 유효한지 여부
- */
- 공개 정적 함수 valiDate($iYear, $iMonth , $iDate) {
- $연도 = 날짜 ( 'Y', 시간 () );
- if ($iYear < self::MIN || $iYear >= $year) {
- return false;
- }
- if ($iMonth < 1 || $iMonth > 12) {
- return false;
- }
- 스위치($iMonth) {
- 사례 4:
- 사례 6 :
- 사례 9 :
- 사례 11 :
- $datePerMonth = 30;
- break;
- 사례 2 :
- $dm = (($iYear % 4 = = 0 && $iYear % 100 != 0) || ($iYear % 400 == 0)) && ($iYear > self::MIN && $iYear < $year);
- $datePerMonth = $dm ? 29 : 28;
- 휴식;
- 기본값 :
- $datePerMonth = 31;
- }
- return ($iDate >= 1) && ($iDate <= $datePerMonth);
- }
-
- /**
- * ID 카드의 각 비트에 해당 비트의 가중치를 곱한 후 합산 값을 구합니다.
- *
- * @param array $iArr
- * @return ID 코드.
- */
- 개인 정적 함수 getPowerSum($iArr) {
- $iSum = 0;
- $power_len = count ( self::$power );
- $iarr_len = 개수 ( $iArr );
- if ($power_len == $iar_len) {
- for($i = 0; $i < $iarr_len; $i ) {
- for($j = 0; $j if ($i == $j) {
- $iSum = $iSum $iArr [$i] * self:: $power [$j];
- }
- }
- }
- }
- return $iSum;
- }
-
- /**
- * 검사 코드 판단을 위해 11의 거듭제곱 합계 값을 취하여 나머지를 구합니다
- *
- * @param int $iSum
- * @return 검사 숫자
- */
- 개인 정적 함수 getCheckCode18($iSum) {
- $sCode = "";
- 스위치($iSum % 11) {
- 사례 10 :
- $sCode = "2";
- break ;
- 사례 9 :
- $sCode = "3";
- 중단;
- 사례 8 :
- $sCode = "4";
- 중단;
- 사례 7:
- $sCode = "5";
- 중단;
- 사례 6 :
- $sCode = "6";
- 중단;
- 사례 5:
- $sCode = "7" ;
- 중단;
- 사례 4 :
- $sCode = "8";
- 중단;
- 사례 3 :
- $sCode = "9";
- 중단;
- 사례 2 :
- $sCode = "x";
- 중단;
- 사례 1 :
- $sCode = "0";
- 중단;
- 사례 0 :
- $ sCode = "1";
- break;
- }
- return $sCode;
- }
- }
复system代码
- /**
- * 신분증 도구 강좌
- *
- * @author Tongle Xu 2013-6-6
- * @copyright Copyright (c) 2003-2103tintsoft.com
- * @license http://www.tintsoft.com
- * @version $Id$
- */
- class Utils_Idcard {
- /**
- * 중국 주민등록번호의 최소 길이입니다.
- */
- const CHINA_ID_MIN_LENGTH = 15;
-
- /**
- * 중국 주민등록번호의 최대 길이입니다.
- */
- const CHINA_ID_MAX_LENGTH = 18;
-
- /**
- * 最低年限
- */
- const MIN = 1930;
-
- /
- 🎜> public static $cityCode = array ("11","12","13","14","15","21","22","23","31","32"," 33","34","35","36","37","41","42","43","44","45","46","50","51" ,"52","53","54","61","62","63","64","65","71","81","82","91" );
-
- /**
- * 省、直轄市代碼表
- */
- public static $power = array (7,9,10,5,8,4,2,1,6,3,7,9,10, 5,8,4,2 );
-
- /**
- * 每位加權因子
- */
- public static $verifyCode = array ("1","0","X","9"," 8","7","6","5","4","3","2" );
- /**
- * 第18位校檢碼
- */
- public static $cityCodes = array (' 11' => '北京','12' => '天津','13' => '河北','14' => '山西','15' => '內蒙古','21' => '遼寧','22' => '吉林','23' => '黑龍江','31' => '上海','32' => '江蘇','33' => '浙江','34 ' => '安徽','35' => '福建','36' => '江西','37' => '山東','41' => '河南','42' => '湖北','43' => '湖南','44' => '廣東','45' => '廣西',
- '46' => '海南','50' => '重慶', '51' => '四川','52' => '貴州','53' => '雲南','54' => '西藏','61' => '陝西','62' => '甘肅','15' => '內蒙古','21' => '遼寧','22' => '吉林','23' => '黑龍江','31' => '上海',' 32' => '江蘇','33' => '浙江','34' => '安徽','35' => '福建','36' => '江西','37' => '山東','41' => '河南','42' => '湖北','43' => '湖南',
- '44' => '廣東','45' => '廣西' ,'46' => '海南','50' => '重慶','51' => '四川','52' => '貴州','53' => '雲南','54' = > '西藏','61' => '陝西','62' => '甘肅','63' => '青海','64' => '寧夏','65' => '新疆', '71' => '台灣','81' => '香港','82' => '澳門','91' => '國外','63' => '青海','64' => '寧夏','65' => '新疆','71' => '台灣','81' => '香港',
- '82' => '澳門','91' => '國外' );
-
- /**
- * 國內身分證校驗
- */
- public static $twFirstCode = array ('A' => 10,'B' => 11,'C' => 12,'D ' => 13,'E' => 14,'F' => 15,'G' => 16,'H' => 17,'J' => 18,'K' => 19,'L' => 20,'M' => 21,'N' => 22,'P' => 23,'Q' => 24,'R' => 25,'S' => 26,'T' = > 27,'U' => 28,'V' => 29,'X' => 30,'Y' => 31,'W' => 32,'Z' => 33,'I' => 34,'O' => 35 );
-
- /**
- * 台灣身分證校驗
- *
- * @var array
- */
- public static $hkFirstCode = array ('A' => 1,'B' => 2,'C ' => 3,'R' => 18,'U' => 21,'Z' => 26,'X' => 24,'W' => 23,'O' => 15,'N' => 14 );
-
- /**
- * 香港身分證校驗
- */
- public static function conver15CardTo18($idCard) {
- $idCard18 = "";
- if (strlen ( $idCard ) != self::CHINA_ID_MIN_LENGTH) {
- return null;
- }
- if (self::isNum ( $idCard )) {
- // 取得出生年月日
- $sYear = ' 19' . substr ( $idCard, 6, 2 );
- $idCard18 = substr ( $idCard, 0, 6 ) . $sYear . substr ( $idCard, 8 );
- // 轉換字元陣列
- $iArr = str_split ( $idCard18 );
- if ($iArr != null) {
- $iSum17 = self::getPowerSum ( $iArr );
- // 取得校驗位
- $
- $ sVal = self::getCheckCode18 ( $iSum17 );
- if (strlen ( $sVal ) > 0) {
- $idCard18 .= $sVal;
- } else {
- return null; }
- } else {
- return null;
- }
- return $idCard18;
- }
-
- /**
- * 將15位元身分證號碼轉換為18位元
- *
- * @param idCard 15位元身分編碼
- * @return 18位元身分編碼
- */
- * 驗證身分證是否合法
- static function validateCard($idCard) {
- $card = trim ( $idCard );
- if (self::validateIdCard18 ( $card )) {
- return true;
- }
- if ( self::validateIdCard15 ( $card )) {
- return true;
- }
- $cardval = self::validateIdCard10 ( $card );
- if ($cardval != null) {
- if ($cardval [2] == "true") {
- return true;
- }
- }
- return false;
- }
-
- /**
- * 18자리 식별 코드가 유효한지 확인
- *
- * @param int $idCard 식별 코드
- * @return boolean 합법 여부
- */
- 공개 정적 함수 verifyIdCard18($idCard) {
- $bTrue = false;
- if (strlen ( $idCard ) == self::CHINA_ID_MAX_LENGTH ) {
- // 전17位
- $code17 = substr ( $idCard, 0, 17 );
- // 第18位
- $code18 = substr ( $idCard, 17, 1 );
- if (self::isNum ( $code17 )) {
- $iArr = str_split ( $code17 );
- if ($iArr != null) {
- $iSum17 = self::getPowerSum ( $iArr );
- // 获取校验位
- $val = self::getCheckCode18 ( $iSum17 );
- if (strlen ( $val ) > 0 && $val == $code18) {
- $bTrue = true;
- }
- }
- }
- }
- return $bTrue;
- }
-
- /**
- * 15자리 식별 코드가 적법한지 확인
- *
- * @param string $idCard 식별 코드
- * @return boolean 적법 여부
- */
- 공개 정적 함수 verifyIdCard15($idCard) {
- if (strlen ( $idCard ) != self::CHINA_ID_MIN_LENGTH) {
- return false;
- }
- if (self::isNum ( $ idCard )) {
- $proCode = substr ( $idCard, 0, 2 );
- if (! isset ( self::$cityCodes [$proCode] )) {
- return false;
- }
- // 升到18位
- $idCard = self::conver15CardTo18 ( $idCard );
- return self::validateIdCard18 ( $idCard );
- } else {
- return false;
- }
- return true;
- }
-
- /**
- * 10자리 식별 코드가 유효한지 확인
- *
- * @param idCard 식별 코드
- * @return ID 카드 정보 배열
- * [0] - 대만, 마카오, 홍콩 [1] - 성별(남성 M, 여성 F, 알 수 없음 N) [2] - 적법한가(법적 참, 불법 거짓)
- * 주민등록번호가 아닐 경우 null을 반환
- *
- */
- public static function verifyIdCard10($idCard) {
- $info = array ();
- $card = str_replace ( "[\(|\)]", "", $card );
- $len = strlen ( $card );
- if ($len != 8 && $len ! = 9 && $len != 10) {
- return null;
- }
- if (0 < preg_match ( "/^[a-zA-Z][0-9]{9}$/", $idCard )) { // 台湾
- $info [0] = "台湾";
- $char2 = substr ( $idCard, 1, 1 );
- if ($char2 == "1") {
- $info [1] = "M";
- } else if ($char2 == " 2") {
- $info [1] = "F";
- } else {
- $info [1] = "N";
- $info [2] = "false";
- return $info;
- }
- $info [2] = self::validateTWCard ( $idCard ) ? "true" : "false";
- } else if (0 < preg_match ( "/^[1|5|7][0-9]{6}\(?[0-9A-Z]\) ?$/", $idCard )) { // 澳门
- $info [0] = "澳门";
- $info [1] = "N";
- // TODO
- } else if (0 < preg_match ( "/^[A-Z]{1,2}[0-9]{6}\(?[0-9A]\)?$/", $idCard )) { // 향港
- $info [0] = "향港";
- $info [1] = "N";
- $info [2] = self::validateHKCard ( $idCard ) ? "true" : "false";
- } else {
- null 반환;
- }
- 정보 반환;
- }
-
- /**
- * 대만 신분증 번호 확인
- *
- * @param string idCard 신분증 번호
- * @return 확인 코드가 일치합니다
- */
- 공개 정적 함수 verifyTWCard($idCard) {
- $start = substr( $idCard, 0, 1 );
- $mid = substr( $idCard, 1, 8 );
- $end = substr( $idCard, 9, 1 );
- $iStart = self::$twFirstCode ['start'];
- $sum = $iStart / 10 ($iStart % 10) * 9;
- $chars = str_split ( $mid );
- $iflag = 8;
- foreach ( $chars as $c ) {
- $sum = $sum $c "" * $iflag;
- $iflag --;
- }
- return ($sum % 10 == 0 ? 0 : (10 - $sum % 10)) == $end ? true : false;
- }
-
- /**
- * 홍콩 신분증 번호 확인(버그 있음, 일부 특수 신분증은 확인 불가)
- *
- * 신분증 앞 2자리는 영문이면 됩니다. 첫 번째 숫자는 공백이며 숫자 58에 해당합니다. 처음 두 개의 영어 문자 A-Z는 숫자 10-35에 해당합니다
- * 체크 코드의 마지막 숫자는 0-9에 해당 숫자를 더한 것입니다. 문자 "A", "A"는 10을 나타냅니다.
- *
- *
- * 모든 ID 번호를 숫자로 변환합니다. 이 숫자는 9-1을 곱한 값의 합에 해당합니다. 11로 나누면 유효한 ID번호
- *
- *
- * @param idCard ID번호
- * @return 인증번호가 일치합니다
- */
- 공개 정적 함수 verifyHKCard($idCard) {
- $card = str_replace ( "[\(|\)] ", "", $card );
- $sum = 0;
- if (strlen ( $card ) == 9) {
- $card0_arr = str_split ( strtoupper ( substr ( $card, 0, 1 ) ) );
- $card1_arr = str_split ( strtoupper ( substr ( $card, 1, 1 ) ) );
- $sum = ($card0_arr [0] - 55) * 9 . ($card1_arr [0] - 55) * 8;
- $card = substr ( $card, 1, 8 );
- } else {
- $card0_arr = str_split ( strtoupper ( substr ( $card, 0) , 1 ) ) );
- $sum = 522 ($card0_arr [0] - 55) * 8;
- }
- $mid = substr( $card, 1, 6 );
- $end = substr( $card, 7, 1 );
- $chars = str_split( $mid );
- $iflag = 7;
- foreach ( $chars as $c ) {
- $sum = $sum $c "" * $iflag;
- $iflag --;
- }
- if (strtoupper ( $ end ) == "A") {
- $sum = $sum 10;
- } else {
- $sum = $sum $end;
- }
- return ($sum % 11 = = 0) ? true : false;
- }
-
- /**
- * ID 번호를 기준으로 나이 가져오기
- *
- * @param string idCard ID 번호
- * @return age
- */
- 공개 정적 함수 getAgeByIdCard($idCard) {
- $iAge = 0;
- if (strlen ( $ idCard ) == self::CHINA_ID_MIN_LENGTH) {
- $idCard = self::conver15CardTo18 ( $idCard );
- }
- $year = substr ( $idCard, 6, 4 );
- $iCurrYear = 날짜( 'Y', 시간() );
- $iAge = $iCurrYear - $year;
- return $iAge;
- }
-
- /**
- * ID 번호를 기준으로 생일 가져오기
- *
- * @param string $idCard ID 번호
- * @return NULL 문자열
- */
- 공개 정적 함수 getDateByIdCard($idCard) {
- $len = strlen ( $idCard );
- if ($len < self::CHINA_ID_MIN_LENGTH) {
- null 반환;
- } else if ($len == CHINA_ID_MIN_LENGTH) {
- $idCard = self::conver15CardTo18 ( $idCard );
- }
- return substr ( $idCard, 12, 2 );
- }
- /**
- * ID 번호를 기준으로 성별 가져오기
- *
- * @param string $idCard ID 번호
- * @return 성별(M-남성, F-여성, N-알 수 없음)
- */
- 공개 정적 함수 getGenderByIdCard($idCard) {
- $sGender = "N";
- if (strlen ( $idCard ) == self::CHINA_ID_MIN_LENGTH) {
- $idCard = self::conver15CardTo18 ( $idCard );
- }
- $sCardNum = substr ( $idCard, 16, 1 );
- if (( int ) $sCardNum % 2 != 0) {
- $sGender = "M";
- } else {
- $sGender = "F";
- }
- return $sGender;
- }
- /* *
- * 주민등록번호를 기준으로 호적도 구하기
- *
- * @param string $idCard 주민등록번호
- * @return string
- */
- 공개 정적 함수 getProvinceByIdCard($idCard) {
- $len = strlen( $idCard );
- $sProvince = null;
- $sProvinNum = "";
- if ($len == self::CHINA_ID_MIN_LENGTH || $len == self::CHINA_ID_MAX_LENGTH) {
- $sProvinNum = substr ( $idCard, 0, 2 );
- }
- $sProvince = self::$cityCodes [$sProvinNum];
- return $sProvince;
- }
- /**
- * 숫자 검증
- *
- * @param int $val
- */
- 공개 정적 함수 isNum($val) {
- return $val == null || $val == "" ? 거짓: 0 < preg_match ( '/^[0-9]*$/', $val );
- }
- /**
- * 날짜가 현재 날짜보다 작을 경우 유효한지 확인
- *
- * @param int $iYear 확인할 날짜(연도)
- * @param int $iMonth 확인할 날짜 확인(1~12월)
- * @param int $iDate 확인 날짜(일)
- * @return 유효한지 여부
- */
- 공개 정적 함수 valiDate($iYear, $iMonth , $iDate) {
- $연도 = 날짜 ( 'Y', 시간 () );
- if ($iYear < self::MIN || $iYear >= $year) {
- return false;
- }
- if ($iMonth < 1 || $iMonth > 12) {
- return false;
- }
- 스위치($iMonth) {
- 사례 4:
- 사례 6 :
- 사례 9 :
- 사례 11 :
- $datePerMonth = 30;
- break;
- 사례 2 :
- $dm = (($iYear % 4 = = 0 && $iYear % 100 != 0) || ($iYear % 400 == 0)) && ($iYear > self::MIN && $iYear < $year);
- $datePerMonth = $dm ? 29 : 28;
- 휴식;
- 기본값 :
- $datePerMonth = 31;
- }
- return ($iDate >= 1) && ($iDate <= $datePerMonth);
- }
-
- /**
- * 将身份证的每位和对应位的加权因子乘之后,再得到和值
- *
- * @param 배열 $iArr
- * @return 身份证编码。
- */
- 개인 정적 함수 getPowerSum($iArr) {
- $iSum = 0;
- $power_len = count ( self::$power );
- $iarr_len = count ( $iArr );
- if ($power_len == $iar_len) {
- for($i = 0; $i < $iarr_len; $i ) {
- for($j = 0; $j < $power_len; $j ) {
- if ($i == $j) {
- $iSum = $iSum $iArr [$i] * self::$power [$j];
- }
- }
- }
- }
- return $iSum;
- }
-
- /**
- * 검사 코드 판단을 위해 11의 거듭제곱 합계 값을 취하여 나머지를 구합니다
- *
- * @param int $iSum
- * @return 검사 숫자
- */
- 비공개 정적 함수 getCheckCode18($iSum) {
- $sCode = "";
- 스위치 ($iSum % 11) {
- 사례 10 :
- $sCode = "2";
- 중단;
- 사례 9 :
- $sCode = "3";
- 중단;
- 사례 8 :
- $sCode = "4";
- 중단;
- 사례 7:
- $sCode = "5";
- break;
- 사례 6 :
- $sCode = "6";
- break;
- 사례 5 :
- $sCode = "7";
- break;
- 사례 4:
- $sCode = "8";
- 중단;
- 사례 3 :
- $sCode = "9";
- 중단;
- 사례 2:
- $sCode = "x ";
- 중단;
- 사례 1 :
- $sCode = "0";
- 중단;
- 사례 0 :
- $sCode = "1";
- 중단;
- }
- $sCode 반환;
- }
- }
复代码
|