ctype_digit în PHP

Verifică dacă un text conține doar cifre (0-9).

Sintaxă
ctype_digit(mixed $text): bool

Ce face ctype_digit

ctype_digit returnează true doar dacă fiecare caracter este o cifră. Semnul minus, punctul zecimal sau spațiile fac rezultatul false. Un text gol dă tot false.

Este potrivită pentru coduri poștale, CNP-uri, coduri de verificare, ID-uri din URL. Funcția este gândită pentru texte: din PHP 8.1, dacă îi dai un număr întreg primești un mesaj Deprecated.

Parametri

Parametru Descriere
$text Textul verificat.

Ce returnează

true dacă textul nu este gol și are doar cifre, altfel false.

Exemple

Exemplul 1: Ce este acceptat

<?php
foreach (["700259", "12.5", "-3", "", "12 34", "0042"] as $text) {
    echo var_export($text, true) . " => " . (ctype_digit($text) ? "doar cifre" : "nu") . "\n";
}

Rezultat

'700259' => doar cifre
'12.5' => nu
'-3' => nu
'' => nu
'12 34' => nu
'0042' => doar cifre

Exemplul 2: Validarea unui ID primit în URL

<?php
$_GET = ["id" => "15abc"];

$id = $_GET["id"] ?? "";
if (!ctype_digit($id)) {
    echo "ID invalid";
} else {
    echo "Afișez articolul " . (int) $id;
}

Rezultat

ID invalid

Greșeli frecvente

  • Dai un număr întreg: ctype_digit(5) verifică de fapt caracterul cu codul ASCII 5 și dă false, plus un mesaj Deprecated. Convertește întâi la text: ctype_digit((string) $x).
  • Folosești ctype_digit pentru prețuri sau numere negative. Pentru acestea folosește is_numeric sau filter_var.

Comenzi înrudite

  • ctype_alnum: Verifică dacă un text conține doar litere și cifre, fără spații sau alte semne.
  • preg_match: Verifică dacă un text se potrivește cu o expresie regulată și extrage prima potrivire.
  • ctype_alpha: Verifică dacă un text conține doar litere (a-z, A-Z).