PHP prakticky/Kontrola platnosti čísla

Z Wikiknih
Skočit na navigaci Skočit na vyhledávání

Skalární hodnoty z formulářového vstupu jsou typu STRING. Pokud potřebujeme zkontrolovat, jestli je zadaná hodnota číslo, je tu několik možností. Nejjednodušší je funkce is_numeric(), ta ale bere v úvahu různé formáty čísla, takže přetypování může být nesnadné. Funkce je citlivá na mezery na konci řetězce, před použitím je vhodná funkce trim().

is_numeric(1); // true
is_numeric('1'); // true
is_numeric('1.0'); // true
is_numeric('1e2'); // true
is_numeric('-1'); // true
is_numeric('0x10'); // true

is_numeric('1,0'); // false
is_numeric('#aaa'); // false


$bool = is_numeric(trim($vstupni_hodnota)); // doporučené použití

Další možností je funkce ctype_digit(). Podle ASCII kódů zkontroluje řetězec na existenci jiných znaků, než čísel. Při prázdném řetězci se chování funkce liší podle verze PHP (do 5.1 true, od 5.1 false).

ctype_digit('1'); // true
ctype_digit('0777'); // true

ctype_digit(1); // false
ctype_digit('1.0'); // false
ctype_digit('1,0'); // false
ctype_digit('1e2'); // false
ctype_digit('-1'); // false
ctype_digit('0x10'); // false


// doporučené použití, prázdný řetězec znamená vždy false
$vstupni_hodnota = trim((string) $vstupni_hodnota);
$bool = $vstupni_hodnota != '' && ctype_digit($vstupni_hodnota);