Ce face is_numeric
is_numeric returnează true pentru numere (int, float) și pentru texte care conțin un număr valid: "42", "-3.5", "1e3". Spațiile de la început și, din PHP 8, cele de la final sunt acceptate.
Este verificarea potrivită pentru datele din formulare, care vin mereu ca text. Atenție: virgula nu este acceptată ca separator zecimal, deci "1,5" nu este numeric.
Parametri
| Parametru | Descriere |
|---|---|
$value |
Valoarea verificată. |
Ce returnează
true dacă valoarea este numerică, altfel false.
Exemple
Exemplul 1: Ce este numeric
<?php
foreach ([42, "42", "-3.5", "1e3", " 12", "1,5", "12abc", "0x1A", ""] as $v) {
echo str_pad(var_export($v, true), 8) . " => " . (is_numeric($v) ? "da" : "nu") . "\n";
}
Rezultat
42 => da
'42' => da
'-3.5' => da
'1e3' => da
' 12' => da
'1,5' => nu
'12abc' => nu
'0x1A' => nu
'' => nu
Exemplul 2: Validarea unei cantități din formular
<?php
$_POST = ["cantitate" => "3"];
$cantitate = $_POST["cantitate"] ?? "";
if (is_numeric($cantitate) && $cantitate > 0) {
echo "Ai comandat " . (int) $cantitate . " bucăți.";
} else {
echo "Cantitate invalidă.";
}
Rezultat
Ai comandat 3 bucăți.
Greșeli frecvente
- Crezi că
is_numericverifică un număr întreg."2.5"și"1e3"sunt și ele numerice. Pentru întregi foloseștefilter_var($x, FILTER_VALIDATE_INT)sauctype_digit. - Utilizatorii români scriu zecimale cu virgulă (
"1,5"). Înlocuiește virgula cu punct înainte de verificare.
Comenzi înrudite
is_int / is_float: Verifică dacă o valoare are tipul int (număr întreg) sau float (număr cu zecimale).intval: Transformă o valoare în număr întreg.floatval: Transformă o valoare în număr cu zecimale (float).