strspn / strcspn în PHP

strspn numără câte caractere de la început fac parte dintr-o listă; strcspn numără câte NU fac parte din ea.

Sintaxă
strspn(string $string, string $characters, int $offset = 0, ?int $length = null): int

Ce face strspn / strcspn

strspn pornește de la începutul textului și numără caracterele cât timp fiecare se află în lista $characters. Se oprește la primul caracter care nu e în listă.

strcspn face inversul: numără caracterele până la primul care este în listă. Practic, îți dă poziția primului caracter din listă (sau lungimea textului, dacă nu apare niciunul).

Ambele acceptă $offset și $length ca să lucreze doar pe o porțiune. Lucrează pe octeți.

Parametri

Parametru Descriere
$string Textul analizat.
$characters Lista de caractere (fiecare caracter contează separat, ordinea nu contează).
$offset Opțional. Poziția de la care începe numărarea.
$length Opțional. Lungimea porțiunii analizate.

Ce returnează

Numărul de caractere numărate.

Exemple

Exemplul 1: Cifrele de la începutul unui text

<?php
$text = "2026-10-19 Lansare";

echo strspn($text, "0123456789") . "\n";
echo strspn($text, "0123456789-");

Rezultat

4
10

Exemplul 2: Poziția primului caracter interzis cu strcspn

<?php
$utilizator = "ana_popescu!2026";

$pozitie = strcspn($utilizator, "!@#$%^&* ");
echo "Partea validă: " . substr($utilizator, 0, $pozitie) . "\n";
echo strcspn("fără spații", " ") . " / " . strcspn("faraspatii", " ");

Rezultat

Partea validă: ana_popescu
6 / 10

Greșeli frecvente

  • Crezi că $characters este un cuvânt căutat. Este o listă de caractere individuale: "abc" înseamnă „a, b sau c”.

Comenzi înrudite

  • strpbrk: Returnează textul începând cu primul caracter care apare într-o listă dată.
  • ctype_digit: Verifică dacă un text conține doar cifre (0-9).
  • strpos: Găsește poziția primei apariții a unui text în alt text.