ctype_alnum

funkcja

Sprawdza, czy wszystkie znaki w ciągu to litery lub cyfry (A–Z, a–z, 0–9). Nie obsługuje znaków spoza ASCII, w tym polskich liter.

ctype_alnum(mixed $text): bool

ctype_alnum zwraca true, gdy każdy znak ciągu to litera ASCII (AZ, az) lub cyfra (09). Pusty ciąg zwraca false. To szybki sposób na sprawdzenie, czy tekst nie zawiera znaków specjalnych, spacji ani interpunkcji — np. przy walidacji nazwy użytkownika lub tokenu.

<?php
declare(strict_types=1);

$login = $_POST['login'] ?? '';

if (!ctype_alnum($login) || strlen($login) < 3 || strlen($login) > 20) {
    echo 'Login może zawierać tylko litery i cyfry (3–20 znaków).';
    exit;
}

// Bezpieczny login: tylko litery i cyfry ASCII
echo 'Login ' . htmlspecialchars($login) . ' jest prawidłowy.';

Kilka wyników do zapamiętania:

var_dump(ctype_alnum('abc123')); // bool(true)
var_dump(ctype_alnum('abc!'));   // bool(false) — znak specjalny
var_dump(ctype_alnum('łódź'));   // bool(false) — polskie litery to nie ASCII
var_dump(ctype_alnum(''));       // bool(false) — pusty ciąg

Pułapka z liczbami całkowitymi. Przekazanie int zamiast string było historycznie interpretowane jako kod ASCII. Od PHP 8.1 generuje E_DEPRECATED. Używaj wyłącznie ciągów znaków.

📘 Naucz się w lekcji →