Heim >Backend-Entwicklung >PHP-Tutorial >So validieren Sie das Buch-ISBN-Nummernformat mithilfe eines regulären Ausdrucks in PHP

So validieren Sie das Buch-ISBN-Nummernformat mithilfe eines regulären Ausdrucks in PHP

王林
王林Original
2023-06-22 09:07:341655Durchsuche

Regulärer Ausdruck ist ein leistungsstarkes Tool zum Textabgleich, mit dem effektiv überprüft werden kann, ob die Eingabedaten den angegebenen Formatanforderungen entsprechen. In Anwendungen wie Bibliotheksverwaltungssystemen ist die ISBN (International Standard Book Number) ein Datenformat, das Beachtung verdient, und für sein Format gelten bestimmte Regeln. In diesem Artikel stellen wir vor, wie man reguläre Ausdrücke in PHP verwendet, um das Buch-ISBN-Nummernformat zu validieren, um sicherzustellen, dass das System die Geschäftslogik im Zusammenhang mit der ISBN-Nummer korrekt verarbeiten kann.

  1. Formatregeln für ISBN-Nummern

Die ISBN-Nummer ist eine Standardnummer zur eindeutigen Identifizierung von Büchern, normalerweise einschließlich der Formate ISBN-10 und ISBN-13. Das ISBN-10-Format besteht aus 10 Ziffern, wobei die letzte Ziffer ein X sein kann; das ISBN-13-Format besteht aus 13 Ziffern. In diesem Artikel konzentrieren wir uns auf das ISBN-13-Format und überprüfen mithilfe regulärer Ausdrücke, ob es wohlgeformt ist.

Die Formatregeln für ISBN-13-Nummern lauten wie folgt:

(1) Die ersten drei Ziffern geben den Länder- oder Sprachunterschied des Buches an. Für verschiedene Länder oder Regionen gibt es unterschiedliche Präfixziffern. Die Vorwahlnummern für China lauten beispielsweise 978 oder 979.

(2) Die nächsten 9 Ziffern sind die Registrierungsnummer des Buchs, die jedem Buch vom Verlag zugewiesen wird.

(3) Die letzte Ziffer ist die Prüfziffer (Check Digit). Die Berechnungsmethode der Prüfziffer ist wie folgt:

1) Die ersten 12 Ziffern werden entsprechend dem Gewicht gewichtet und summiert, wobei das Gewicht der gerade Ziffern sind 3, die Gewichtung ungerader Ziffern ist 1;

2) Teilen Sie das Ergebnis durch 10, um den Rest zu erhalten, subtrahieren Sie den Rest von 10 und die Differenz ist der Prüfcode.

Zum Beispiel lautet die ISBN-13-Nummer des Buches „PHP and MySQL Development from Beginner to Master“ 978-7-81037-609-2, wobei die gewichtete Summe der ersten 12 Ziffern 1×9+3× beträgt 7+1× 8+3×8+1×1+3×0+1×3+3×7+1×6+3×0+1×9+3×2=99, nimm den Rest als 9, und subtrahiere 10, um das Ergebnis zu erhalten. Der Rest ist 1, dh der letzte Prüfcode ist 1.

  1. Verwenden Sie reguläre Ausdrücke in PHP, um das ISBN-Nummernformat zu überprüfen

Um zu überprüfen, ob das ISBN-Nummernformat korrekt ist, können wir die reguläre Ausdrucksfunktion preg_match() in PHP verwenden, deren Syntax wie folgt lautet:

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

wobei $pattern das reguläre Ausdrucksmuster ist, $subject die zu vergleichende Zeichenfolge ist, $matches das übereinstimmende Ergebnisarray ist, $flags das Optionsflag ist und $offset die Startposition für den Vergleich ist. Wenn die Übereinstimmung erfolgreich ist, gibt die Funktion 1 zurück; wenn die Übereinstimmung fehlschlägt, gibt die Funktion 0 zurück.

Das Folgende ist ein Beispielcode zur Validierung des ISBN-13-Nummernformats mithilfe regulärer PHP-Ausdrücke:

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

Im obigen Beispielcode definieren wir zunächst eine Funktion namens is_valid_isbn(), deren Parameter die zu überprüfende ISBN-Nummer ist. Diese Funktion verwendet zunächst einen regulären Ausdruck, um zu überprüfen, ob das Format der ISBN-13-Nummer korrekt ist. Wenn das Format korrekt ist, wird der Prüfcode berechnet und mit der letzten Ziffer verglichen, um festzustellen, ob die ISBN-Nummer gültig ist. Unter anderem wird str_replace('-', '', $isbn) verwendet, um das Bindestrich-Trennzeichen in der ISBN-Nummer zur Berechnung zu entfernen.

Abschließend können wir es an einigen ISBN-Nummern testen, um die Wirksamkeit der Funktion zu überprüfen. Die Funktion gibt „true“ zurück, wenn die eingegebene ISBN-Nummer das richtige Format hat und die Prüfsumme korrekt berechnet wurde; andernfalls gibt sie „false“ zurück. Auf diese Weise können wir effektiv überprüfen, ob die eingegebene ISBN-Nummer den Regeln entspricht, und sicherstellen, dass das System die ISBN-bezogene Geschäftslogik korrekt verarbeiten kann.

  1. Fazit

In diesem Artikel wird erläutert, wie Sie mit regulären Ausdrücken in PHP überprüfen, ob das Format der Buch-ISBN-13-Nummer korrekt ist, und wie Sie effektiv feststellen können, ob die Eingabedaten den Regeln entsprechen. In der tatsächlichen Entwicklung können wir je nach tatsächlichem Bedarf unterschiedliche reguläre Ausdrucksmuster definieren, um uns an unterschiedliche Anforderungen an die Überprüfung von Datenformaten anzupassen. Reguläre Ausdrücke sind ein sehr leistungsfähiges Tool zum Textabgleich, und es ist für Entwickler von entscheidender Bedeutung, die Fähigkeiten im Umgang mit regulären Ausdrücken zu beherrschen.

Das obige ist der detaillierte Inhalt vonSo validieren Sie das Buch-ISBN-Nummernformat mithilfe eines regulären Ausdrucks in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn