>  기사  >  백엔드 개발  >  PHP 정규식 연습: ISBN 코드 일치

PHP 정규식 연습: ISBN 코드 일치

王林
王林원래의
2023-06-23 08:20:531145검색

ISBN 코드는 도서의 고유 식별 코드로, 국제표준도서번호를 식별하는 데 사용됩니다. ISBN 코드는 일반적으로 13자리로 구성되며, 그 중 마지막 자리는 앞의 12자리를 기준으로 계산된 체크코드이다. PHP에서는 정규식을 사용하여 ISBN 코드를 일치시켜 정확성을 보장할 수 있습니다.

ISBN 코드 형식은 다음과 같습니다.

ISBN13: 978-7-111-40543-9

이 중 처음 세 자리는 EAN 국가 코드, 네 번째부터 여섯 번째 자리는 출판사 코드입니다. , 일곱 번째부터 열두 번째 숫자는 첫 번째 숫자가 책 번호이고 마지막 숫자가 체크 코드입니다. 체크 코드 계산 방법은 다음 링크를 참조하세요: https://zh.wikipedia.org/wiki/International_Standard_Book_Number#EAN/UCC-%E5%9C%B0%E7%90%86%E7%A0% 81%E5% 92%8C%E6%A0%A1%E9%AA%8C%E7%A0%81.

정규식을 사용하여 다음과 같이 ISBN13 코드를 일치시킬 수 있습니다.

$pattern = '/^978-[d]{1,5}-[d]{1,7}-[d]{1,6}-[dX]$/';

그 중 "^" 및 "$"는 문자열의 시작과 끝을 나타냅니다. "[d]"는 임의의 숫자, "{1, 5 }"는 숫자가 1~5회 반복됨을 의미하고, "[dX]"는 숫자 또는 문자 X를 의미합니다.

전체 PHP 코드 구현을 살펴보겠습니다.

<?php
function checkISBN($isbn) {
    $pattern = '/^978-[d]{1,5}-[d]{1,7}-[d]{1,6}-[dX]$/';
    if (preg_match($pattern, $isbn)) {
        $digits = str_replace('-', '', substr($isbn, 0, -1));
        $length = strlen($digits);
        $sum = 0;
        for ($i = 0; $i < $length; $i++) {
            $sum += intval($digits[$i]) * (($i % 2 == 0) ? 1 : 3);
        }
        $checkDigit = 10 - ($sum % 10);
        if ($checkDigit == 10) {
            $checkDigit = 'X';
        }
        return $checkDigit == substr($isbn, -1);
    } else {
        return false;
    }
}

$isbn = '978-7-111-40543-9';
if (checkISBN($isbn)) {
    echo $isbn . ' is a valid ISBN!';
} else {
    echo $isbn . ' is not a valid ISBN!';
}

?>

이 코드에서는 ISBN 코드를 매개변수로 받는 checkISBN이라는 함수를 정의합니다. 내부적으로 함수는 먼저 정규식을 사용하여 ISBN 코드에 대한 형식 확인을 수행한 다음 처음 12자리를 기준으로 확인 코드를 계산하고 마지막으로 원래 ISBN 코드의 확인 코드와 비교하여 유효한지 여부를 확인합니다.

위 코드를 PHP 파일로 저장한 다음 명령줄에서 실행할 수 있습니다. 출력 결과는 다음과 같습니다.

978-7-111-40543-9 is a valid ISBN!

$isbn 값이 '978-7-과 같은 불법 ISBN 코드로 변경된 경우 111-40543-0 ', 출력 결과는 다음과 같습니다.

978-7-111-40543-0 is not a valid ISBN!

요약:

정규 표현식은 폭넓게 적용할 수 있는 매우 강력하고 유연한 도구입니다. PHP에서는 정규식을 사용하여 문자열 일치 및 형식 확인과 같은 작업을 수행할 수 있으며 ISBN 코드 확인도 매우 편리합니다. 개발자는 실제 필요에 따라 정규식을 유연하게 사용하여 코드 효율성과 유지 관리성을 향상시킬 수 있습니다.

위 내용은 PHP 정규식 연습: ISBN 코드 일치의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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