Sprawdzenie, czy wartość jest poprawnym numerem ISBN (weryfikacja sumy kontrolnej)

Założenie: Napiszemy funkcję PHP, która sprawdzi, czy podany numer ISBN jest poprawny, weryfikując jego sumę kontrolną.

Krok po kroku:

  1. Przygotowanie funkcji: Zdefiniujemy funkcję isValidISBN, która przyjmie numer ISBN jako argument.
  2. 
    function isValidISBN($isbn) {
      // Usuwamy myślniki i spacje
      $isbn = str_replace(array('-', ' '), '', $isbn);
    
      // Sprawdzenie długości ISBN
      if (strlen($isbn) != 10 && strlen($isbn) != 13) {
        return false;
      }
    
      // ... (dalej kod w kolejnych krokach)
    }
    				
  3. Weryfikacja długości i formatu ISBN-10: Sprawdzamy, czy długość ISBN jest równa 10 i czy zawiera tylko cyfry.
  4. 
      if (strlen($isbn) == 10) {
        if (!ctype_digit($isbn)) return false;
        // Algorytm weryfikacji sumy kontrolnej dla ISBN-10
        $sum = 0;
        for ($i = 0; $i < 9; $i++) {
          $sum += ($isbn[$i] * (10 - $i));
        }
        $checkDigit = 11 - ($sum % 11);
        if ($checkDigit == 10) $checkDigit = 'X';
        return $checkDigit == $isbn[9];
      }
    				
  5. Weryfikacja długości i formatu ISBN-13: Sprawdzamy, czy długość ISBN jest równa 13 i czy zawiera tylko cyfry.
  6. 
      if (strlen($isbn) == 13) {
        if (!ctype_digit($isbn)) return false;
        // Algorytm weryfikacji sumy kontrolnej dla ISBN-13
        $sum = 0;
        for ($i = 0; $i < 12; $i++) {
          $sum += ($i % 2 == 0) ? $isbn[$i] : $isbn[$i] * 3;
        }
        $checkDigit = 10 - ($sum % 10);
        if ($checkDigit == 10) $checkDigit = 0;
        return $checkDigit == $isbn[12];
      }
      return false; // ISBN nie jest ani 10, ani 13-cyfrowy
    }
    				
  7. Użycie funkcji: Wywołujemy funkcję i wyświetlamy wynik.
  8. 
    $isbn10 = "0321765723";
    $isbn13 = "978-0321765727";
    $isbnInvalid = "1234567890123";
    
    echo "ISBN-10 ('$isbn10'): " . (isValidISBN($isbn10) ? 'Poprawny' : 'Niepoprawny') . "
    "; echo "ISBN-13 ('$isbn13'): " . (isValidISBN($isbn13) ? 'Poprawny' : 'Niepoprawny') . "
    "; echo "ISBN-Invalid ('$isbnInvalid'): " . (isValidISBN($isbnInvalid) ? 'Poprawny' : 'Niepoprawny') . "
    ";

Ten przykład pokazuje podstawy walidacji numerów ISBN w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi metodami walidacji danych w formularzach.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *