Maison  >  Article  >  développement back-end  >  Pratique des expressions régulières PHP : correspondance du code ISBN

Pratique des expressions régulières PHP : correspondance du code ISBN

王林
王林original
2023-06-23 08:20:531145parcourir

Le code ISBN est un code d'identification unique pour un livre et est utilisé pour identifier le numéro international standard du livre. Le code ISBN se compose généralement de 13 chiffres, dont le dernier chiffre est un code de contrôle calculé sur la base des 12 chiffres précédents. En PHP, nous pouvons utiliser des expressions régulières pour faire correspondre les codes ISBN afin de garantir leur exactitude.

Le format du code ISBN est le suivant :

ISBN13 : 978-7-111-40543-9

Parmi eux, le premier trois chiffres sont le code EAN du pays, les quatrième à sixième chiffres sont le code de l'éditeur, les septième à douzième chiffres sont le numéro du livre et le dernier chiffre est le code de contrôle. Pour la méthode de calcul du code de chèque, veuillez vous référer à ce lien : 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.

Nous pouvons utiliser des expressions régulières pour faire correspondre les codes ISBN13, comme suit :

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

Parmi eux, "^" et "$" représentent le début et la fin de la chaîne " ; [d ]" représente n'importe quel nombre, "{1,5}" représente le nombre répété 1 à 5 fois ; "[dX]" représente n'importe quel nombre ou lettre X.

Regardons une implémentation complète du code 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!';
}

?>

Dans ce code, nous définissons une fonction appelée checkISBN, qui reçoit un code ISBN en paramètre. En interne, la fonction utilise d'abord une expression régulière pour effectuer une vérification du format du code ISBN, puis calcule le code de contrôle en fonction des 12 premiers chiffres et enfin le compare avec le code de contrôle du code ISBN d'origine pour déterminer s'il est valide.

Nous pouvons enregistrer le code ci-dessus en tant que fichier PHP, puis l'exécuter dans la ligne de commande. Le résultat de sortie est :

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

Si la valeur de $isbn est modifiée en. un code ISBN illégal, par exemple '978-7-111-40543-0', le résultat de sortie est :

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

Résumé :

L'expression régulière est un outil très puissant et outil flexible. A une large applicabilité. En PHP, nous pouvons utiliser des expressions régulières pour effectuer des opérations telles que la correspondance de chaînes et la vérification de format. La vérification des codes ISBN est également très pratique. Les développeurs peuvent utiliser les expressions régulières de manière flexible en fonction de leurs besoins réels pour améliorer l'efficacité et la maintenabilité du code.

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