PHP prakticky/Kontrola platnosti čísla

Z Wikiknih

Přejít na: navigace, hledá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);