Maison >développement back-end >tutoriel php >Comment valider le format du numéro ISBN d'un livre à l'aide d'une expression régulière en PHP

Comment valider le format du numéro ISBN d'un livre à l'aide d'une expression régulière en PHP

王林
王林original
2023-06-22 09:07:341655parcourir

L'expression régulière est un puissant outil de correspondance de texte qui peut vérifier efficacement si les données d'entrée répondent aux exigences de format spécifiées. Dans des applications telles que les systèmes de gestion de bibliothèques, l'ISBN (International Standard Book Number) est un format de données digne d'attention, et son format obéit à certaines règles. Dans cet article, nous présenterons comment utiliser des expressions régulières en PHP pour valider le format du numéro ISBN du livre afin de garantir que le système peut gérer correctement la logique métier liée au numéro ISBN.

  1. Règles de format des numéros ISBN

Le numéro ISBN est un numéro standard utilisé pour identifier de manière unique les livres, comprenant généralement les formats ISBN-10 et ISBN-13. Le format ISBN-10 se compose de 10 chiffres, le dernier chiffre pouvant être un X ; le format ISBN-13 est composé de 13 chiffres. Dans cet article, nous allons nous concentrer sur le format ISBN-13 et vérifier qu'il est bien formé à l'aide d'expressions régulières.

Les règles de format des numéros ISBN-13 sont les suivantes :

(1) Les trois premiers chiffres indiquent la différence de pays ou de langue du livre. Il y aura différents chiffres de préfixe pour différents pays ou régions. Par exemple, les préfixes pour la Chine sont 978 ou 979.

(2) Les 9 chiffres suivants sont le numéro d’enregistrement du livre, attribué à chaque livre par l’éditeur.

(3) Le dernier chiffre est le chiffre de contrôle (Check Digit). Le chiffre de contrôle est calculé comme suit :

1) Les 12 premiers chiffres sont pondérés et additionnés en fonction du poids, où le poids des chiffres pairs est 3 , le poids des chiffres impairs est de 1 ;

2) Divisez le résultat par 10 pour obtenir le reste, soustrayez le reste de 10, et la différence est le code de contrôle.

Par exemple, le numéro ISBN-13 du livre "Développement PHP et MySQL du débutant au maître" est 978-7-81037-609-2, où la somme pondérée des 12 premiers chiffres est 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, prenons le reste comme 9, et soustrayez 10 pour obtenir le résultat. Le reste est 1, c'est-à-dire que le dernier code de contrôle est 1.

  1. Utilisez des expressions régulières en PHP pour vérifier le format du numéro ISBN

Afin de vérifier si le format du numéro ISBN est correct, nous pouvons utiliser la fonction d'expression régulière preg_match() en PHP, dont la syntaxe est la suivante :

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

où $pattern est le modèle d'expression régulière, $subject est la chaîne à mettre en correspondance, $matches est le tableau de résultats correspondant, $flags est l'indicateur d'option et $offset est la position de correspondance de départ. Lorsque la correspondance réussit, la fonction renvoie 1 ; lorsque la correspondance échoue, la fonction renvoie 0.

Ce qui suit est un exemple de code pour valider le format de numéro ISBN-13 à l'aide d'expressions régulières PHP :

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 号码。';
}

Dans l'exemple de code ci-dessus, nous définissons d'abord une fonction appelée is_valid_isbn() dont le paramètre est le numéro ISBN à vérifier. Cette fonction utilise d'abord une expression régulière pour vérifier si le format du numéro ISBN-13 est correct. Si le format est correct, le code de contrôle est calculé et comparé au dernier chiffre pour déterminer si le numéro ISBN est valide. Parmi eux, str_replace('-', '', $isbn) est utilisé pour supprimer le séparateur de tiret dans le numéro ISBN pour le calcul.

Enfin, nous pouvons le tester sur certains numéros ISBN pour vérifier l'efficacité de la fonction. La fonction renvoie vrai lorsque le numéro ISBN saisi est au format correct et que la somme de contrôle est calculée correctement, sinon elle renvoie faux ; De cette manière, nous pouvons vérifier efficacement si le numéro ISBN saisi est conforme aux règles et garantir que le système peut gérer correctement la logique métier liée à l'ISBN.

  1. Conclusion

Cet article explique comment utiliser des expressions régulières en PHP pour vérifier si le format du numéro ISBN-13 du livre est correct et peut déterminer efficacement si les données d'entrée sont conformes aux règles. Dans le développement réel, nous pouvons définir différents modèles d'expressions régulières en fonction des besoins réels pour nous adapter aux différents besoins de vérification du format de données. Les expressions régulières sont un outil de correspondance de texte très puissant et il est crucial que les développeurs maîtrisent les compétences nécessaires à leur utilisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn