is_numeric în PHP

Verifică dacă o valoare este un număr sau un text care arată ca un număr.

Sintaxă
is_numeric(mixed $value): bool

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_numeric verifică un număr întreg. "2.5" și "1e3" sunt și ele numerice. Pentru întregi folosește filter_var($x, FILTER_VALIDATE_INT) sau ctype_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).