Sprawdzenie, czy wartość jest numerem ISBN
Założenie: Napiszemy funkcję w PHP, która sprawdzi, czy podany ciąg znaków jest poprawnym numerem ISBN.
Krok po kroku:
- Krok 1: Stworzenie funkcji walidującej. Funkcja będzie przyjmować numer ISBN jako argument i zwróci wartość logiczną (true/false) wskazującą na poprawność.
- Krok 2: Testowanie funkcji. Sprawdźmy, czy funkcja działa poprawnie dla różnych numerów ISBN.
- Krok 3: Zastosowanie w formularzu. Można włączyć tę funkcję do walidacji danych z formularza.
function isValidISBN(string $isbn): bool {
// Usuwamy spacje i myślniki
$isbn = str_replace([' ', '-'], '', $isbn);
// Sprawdzenie długości ISBN
if (strlen($isbn) !== 10 && strlen($isbn) !== 13) {
return false;
}
// Walidacja ISBN-10
if (strlen($isbn) === 10) {
$sum = 0;
for ($i = 0; $i < 10; $i++) {
$sum += $isbn[$i] * (10 - $i);
}
return $sum % 11 === 0;
}
// Walidacja ISBN-13
if (strlen($isbn) === 13) {
$sum = 0;
for ($i = 0; $i < 12; $i++) {
$sum += ($i % 2 === 0) ? $isbn[$i] : $isbn[$i] * 3;
}
return (10 - ($sum % 10)) % 10 === intval($isbn[12]);
}
return false; // Powinno być nieosiągalne, ale dla bezpieczeństwa
}
$isbn10 = "0321765723";
$isbn13 = "978-0321765727";
$isbnInvalid = "1234567890123";
echo "ISBN-10 ('" . $isbn10 . "'): " . (isValidISBN($isbn10) ? 'Poprawny' : 'Niepoprawny') . "\n";
echo "ISBN-13 ('" . $isbn13 . "'): " . (isValidISBN($isbn13) ? 'Poprawny' : 'Niepoprawny') . "\n";
echo "ISBN-Invalid ('" . $isbnInvalid . "'): " . (isValidISBN($isbnInvalid) ? 'Poprawny' : 'Niepoprawny') . "\n";
Pamiętaj, aby odpowiednio obsłużyć ewentualne błędy walidacji w formularzu.
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.