>백엔드 개발 >PHP 튜토리얼 >PHP 정규식을 사용하여 입력 문자열이 올바른 은행 카드 번호 형식인지 확인하는 방법

PHP 정규식을 사용하여 입력 문자열이 올바른 은행 카드 번호 형식인지 확인하는 방법

PHPz
PHPz원래의
2023-06-24 10:02:511491검색

현대 경제의 급속한 발전과 함께 금융 거래가 점점 더 빈번해지고 있습니다. 일반적인 결제 수단인 은행 카드는 안전성과 정확성을 보장해야 합니다. 따라서 은행 카드 거래 시 은행 카드 번호가 정확한지 확인하는 것이 매우 중요합니다. 이 기사에서는 PHP 정규 표현식을 사용하여 입력 문자열이 올바른 은행 카드 번호 형식인지 확인하는 방법을 소개합니다.

은행 카드 번호는 일반적으로 Luhn 알고리즘을 사용하여 확인됩니다. 즉, 카드 번호의 각 번호에 하나씩 가중치를 부여하고 결과를 더한 후 마지막으로 모듈로를 취하는 것을 의미합니다. 결과가 0이면 은행 카드 번호 형식이 올바른 것입니다. 구체적인 작업은 다음과 같습니다:

1. 오른쪽에서 왼쪽으로 계산합니다. 카드 번호의 마지막 숫자는 첫 번째 숫자입니다. 왼쪽으로 돌리면 2를 곱한 숫자가 2보다 크면 각 숫자에 2를 곱합니다. 10과 같으면 곱합니다. 두 숫자로 나누고 두 숫자를 더합니다.

2. 2를 곱한 모든 숫자를 더하세요.

3. 오른쪽에서 왼쪽으로 세어 카드번호 마지막 숫자가 첫 번째가 되고, 왼쪽으로 가서 각 숫자에 1을 곱하거나 말거나 곱한 후 결과를 더하세요.

4. 2단계와 3단계의 결과를 더합니다. 결과가 10으로 나누어지면 은행 카드 번호 형식이 올바른 것입니다.

위의 확인 과정은 PHP 정규식을 사용하여 쉽게 달성할 수 있습니다. 구체적인 구현 단계는 다음과 같습니다.

1단계: 은행 카드 번호 형식 지정
은행 카드 번호에는 숫자만 포함될 수 있으므로 문자열에서 숫자가 아닌 문자를 공백으로 바꾸려면 PHP의 preg_replace 함수를 사용해야 합니다.

$bank_card_number = preg_replace('/D/','',$bank_card_number);

2단계: 문자열 길이 확인
은행 카드 번호 길이는 일반적으로 16~19자리이므로 PHP의 strlen 기능을 사용해야 합니다. 문자열 길이가 16인지 19인지 확인합니다.

if(strlen($bank_card_number) !== 16 && strlen($bank_card_number) !== 19){

// 长度不正确

}

3단계: Luhn 알고리즘 검증 구현
PHP의 preg_match 함수를 정규 표현식과 결합하여 Luhn 구현 알고리즘 검증.

$len = strlen($bank_card_number);
$sum = 0;
for($i = 0; $i < $len; $i++){

$value = intval($bank_card_number[$len - $i - 1]);
$sum += (($i % 2) !== 0) ? (($value * 2) >= 10 ? ($value * 2 - 9) : ($value * 2)) : $value;

}
if(($sum % 10) ! == 0){

// 格式不正确

}

이제 위의 코드를 함수에 통합하여 은행 카드 번호 형식을 확인하는 기능을 구현해 보겠습니다.

function verify_bank_card_number($bank_card_number) {

$bank_card_number = preg_replace('/D/','',$bank_card_number);
if(strlen($bank_card_number) !== 16 && strlen($bank_card_number) !== 19){
    return false;
}
$len = strlen($bank_card_number);
$sum = 0;
for($i = 0; $i < $len; $i++){
    $value = intval($bank_card_number[$len - $i - 1]);
    $sum += (($i % 2) !== 0) ? (($value * 2) >= 10 ? ($value * 2 - 9) : ($value * 2)) : $value;
}
if(($sum % 10) !== 0){
    return false;
}
return true;

}

이 함수를 호출하고 은행 카드 번호 문자열을 전달하여 은행 카드 번호 형식이 올바른지 확인합니다.

$bank_card_number = '6228480402564890018';
if(verify_bank_card_number($bank_card_number)){

echo '银行卡号格式正确';

} else {

echo '银行卡号格式不正确';

}

위 단계를 통해 PHP 정규식의 preg_match 함수를 사용하면 빠르게 사용자를 확인할 수 있습니다. 입력한 은행카드번호가 정확합니까? 이를 통해 은행 카드 번호의 잘못된 입력으로 인해 발생하는 거래 실패와 같은 문제를 효과적으로 방지할 수 있습니다.

위 내용은 PHP 정규식을 사용하여 입력 문자열이 올바른 은행 카드 번호 형식인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.