>  기사  >  백엔드 개발  >  PHP에서 정규 표현식을 사용하여 책 ISBN 번호 형식을 확인하는 방법

PHP에서 정규 표현식을 사용하여 책 ISBN 번호 형식을 확인하는 방법

王林
王林원래의
2023-06-22 09:07:341620검색

정규식은 입력 데이터가 지정된 형식 요구 사항을 충족하는지 효과적으로 확인할 수 있는 강력한 텍스트 일치 도구입니다. 도서관 관리 시스템과 같은 응용 분야에서 ISBN(국제 표준 도서 번호)은 주목할만한 데이터 형식이며 해당 형식에는 특정 규칙이 있습니다. 이 기사에서는 시스템이 ISBN 번호 관련 비즈니스 로직을 올바르게 처리할 수 있는지 확인하기 위해 PHP에서 정규식을 사용하여 책 ISBN 번호 형식을 검증하는 방법을 소개합니다.

  1. ISBN 번호 형식 규칙

ISBN 번호는 일반적으로 ISBN-10 및 ISBN-13 형식을 포함하여 책을 고유하게 식별하는 데 사용되는 표준 번호입니다. ISBN-10 형식은 10자리로 구성되며, 마지막 숫자는 X일 수 있습니다. ISBN-13 형식은 13자리로 구성됩니다. 이 기사에서는 ISBN-13 형식에 중점을 두고 정규식을 사용하여 형식이 올바른지 확인합니다.

ISBN-13 번호의 형식 규칙은 다음과 같습니다.

(1) 처음 세 자리는 책의 국가 또는 언어 차이를 나타냅니다. 국가 또는 지역에 따라 접두사가 다릅니다. 예를 들어 중국의 접두사 번호는 978 또는 979입니다.

(2) 다음 9자리는 출판사가 각 도서에 부여하는 도서 등록번호입니다.

(3) 마지막 숫자는 검사 숫자(Check Digit)로 계산됩니다.

1) 처음 12자리는 가중치에 따라 가중치를 부여하고 합산되며, 여기서 짝수 숫자의 가중치는 다음과 같습니다. 3, 홀수 숫자의 가중치는 1입니다.

2) 결과를 10으로 나누어 나머지를 구한 후 10에서 나머지를 빼면 그 차이가 체크 코드가 됩니다.

예를 들어 "PHP and MySQL Development from Beginner to Master" 책의 ISBN-13 번호는 978-7-81037-609-2이며, 여기서 처음 12자리의 ​​가중 합은 1×9+3×입니다. 7+1× 8+3×8+1×1+3×0+1×3+3×7+1×6+3×0+1×9+3×2=99, 나머지를 9로 취하고, 10을 빼서 결과를 얻습니다. 나머지는 1입니다. 즉, 마지막 확인 코드는 1입니다.

  1. PHP에서 정규식을 사용하여 ISBN 번호 형식을 확인하세요

ISBN 번호 형식이 올바른지 확인하기 위해 PHP에서 정규식 함수 preg_match()를 사용할 수 있습니다. 해당 구문은 다음과 같습니다.

preg_match(string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0): int|false

여기서 $pattern은 정규식 패턴이고, $subject는 일치할 문자열, $matches는 일치 결과 배열, $flags는 옵션 플래그, $offset은 일치 시작 위치입니다. 일치에 성공하면 함수는 1을 반환하고, 일치에 실패하면 함수는 0을 반환합니다.

다음은 PHP 정규식을 사용하여 ISBN-13 숫자 형식을 확인하는 샘플 코드입니다.

function is_valid_isbn($isbn) {
    $pattern = '/^97[89]d{10}$/'; // 匹配 ISBN-13 号码格式的正则表达式
    if(preg_match($pattern, $isbn)) { // 使用 preg_match() 函数进行匹配
        $digits = str_split($isbn);
        $check_digit = 0; // 校验码的计算过程
        for($i=0; $i<12; $i+=2) {
            $check_digit += $digits[$i] + 3 * $digits[$i+1];
        }
        $check_digit = (10 - $check_digit % 10) % 10;
        return $digits[12] == $check_digit;
    }
    else {
        return false;
    }
}

// 验证 ISBN-13 号码格式
$isbn1 = '978-7-81037-609-1';
$isbn2 = '978-7-81037-609-2';
if(is_valid_isbn(str_replace('-', '', $isbn1))) {
    echo $isbn1.' 是一个有效的 ISBN-13 号码。';
}
else {
    echo $isbn1.' 不是一个有效的 ISBN-13 号码。';
}
if(is_valid_isbn(str_replace('-', '', $isbn2))) {
    echo $isbn2.' 是一个有效的 ISBN-13 号码。';
}
else {
    echo $isbn2.' 不是一个有效的 ISBN-13 号码。';
}

위 샘플 코드에서는 먼저 확인할 ISBN 번호를 매개변수로 하는 is_valid_isbn()이라는 함수를 정의합니다. 이 함수는 먼저 정규식을 사용하여 ISBN-13 번호의 형식이 올바른지 확인합니다. 형식이 올바른 경우 검사 코드를 계산하고 마지막 숫자와 비교하여 ISBN 번호가 유효한지 확인합니다. 그 중 str_replace('-', '', $isbn)은 계산을 위해 ISBN 번호에서 대시 구분 기호를 제거하는 데 사용됩니다.

마지막으로 일부 ISBN 번호에서 테스트하여 기능의 효율성을 확인할 수 있습니다. 입력된 ISBN 번호가 올바른 형식이고 체크섬이 올바르게 계산되면 이 함수는 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이러한 방식으로 입력된 ISBN 번호가 규칙을 준수하는지 효과적으로 검증하고 시스템이 ISBN 관련 비즈니스 로직을 올바르게 처리할 수 있는지 확인할 수 있습니다.

  1. 결론

이 기사에서는 PHP에서 정규식을 사용하여 책 ISBN-13 번호의 형식이 올바른지 확인하고 입력 데이터가 규칙을 준수하는지 효과적으로 확인할 수 있는 방법을 소개합니다. 실제 개발에서는 다양한 데이터 형식 확인 요구 사항에 적응하기 위해 실제 요구 사항에 따라 다양한 정규식 패턴을 정의할 수 있습니다. 정규식은 매우 강력한 텍스트 일치 도구이므로 개발자가 정규식 사용 기술을 익히는 것이 중요합니다.

위 내용은 PHP에서 정규 표현식을 사용하여 책 ISBN 번호 형식을 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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