Ce face preg_match
O expresie regulată (regex) este un șablon care descrie forma unui text: „patru cifre”, „o adresă de email”, „un cuvânt care începe cu majusculă”. preg_match caută prima potrivire a șablonului și returnează 1 dacă o găsește, 0 dacă nu.
Șablonul se scrie între delimitatori, de obicei /.../, urmat de modificatori: i (fără majuscule), u (UTF-8, necesar pentru diacritice). Părțile puse între paranteze sunt salvate separat în $matches.
Elemente uzuale: \d cifră, \w literă, cifră sau _, \s spațiu, . orice caracter, + o dată sau de mai multe ori, * de zero sau mai multe ori, {4} exact de 4 ori, ^ și $ începutul și sfârșitul textului.
Parametri
| Parametru | Descriere |
|---|---|
$pattern |
Expresia regulată, cu delimitatori, de exemplu '/^\d{4}$/'. |
$subject |
Textul verificat. |
$matches |
Opțional. Variabilă în care primești potrivirea: [0] întreaga potrivire, [1], [2]… grupurile din paranteze. |
$flags |
Opțional. De exemplu PREG_OFFSET_CAPTURE pentru a primi și pozițiile. |
$offset |
Opțional. Poziția (în octeți) de la care începe căutarea. |
Ce returnează
1 dacă există potrivire, 0 dacă nu, false dacă șablonul este greșit.
Exemple
Exemplul 1: Validarea unui cod poștal românesc
^ și $ obligă întregul text să aibă exact 6 cifre.
<?php
foreach (["700259", "70025", "7002590", "70O259"] as $cod) {
echo $cod . ": " . (preg_match('/^\d{6}$/', $cod) ? "valid" : "invalid") . "\n";
}
Rezultat
700259: valid
70025: invalid
7002590: invalid
70O259: invalid
Exemplul 2: Extragerea părților unei date
<?php
$text = "Comanda a fost livrată pe 19.10.2026 la Iași.";
if (preg_match('/(\d{2})\.(\d{2})\.(\d{4})/', $text, $m)) {
print_r($m);
echo "Anul: " . $m[3];
}
Rezultat
Array
(
[0] => 19.10.2026
[1] => 19
[2] => 10
[3] => 2026
)
Anul: 2026
Exemplul 3: Grupuri cu nume și modificatorul u
<?php
$adresa = "Strada Ștefan cel Mare nr. 12";
if (preg_match('/^Strada (?<strada>.+) nr\. (?<numar>\d+)$/u', $adresa, $m)) {
echo "Strada: " . $m["strada"] . "\n";
echo "Numărul: " . $m["numar"];
}
Rezultat
Strada: Ștefan cel Mare
Numărul: 12
Greșeli frecvente
- Scrii șablonul între ghilimele duble și
\dsau$sunt interpretate de PHP. Scrie expresiile regulate între ghilimele simple:'/^\d+$/'. - Uiți delimitatorii:
preg_match('\d+', ...)dă avertismentulDelimiter must not be alphanumeric. - Lucrezi cu diacritice fără modificatorul
u. Fără el,.și\wvăd octeți, nu litere.
Comenzi înrudite
preg_match_all: Găsește toate potrivirile unei expresii regulate într-un text și le pune într-un tablou.preg_replace: Înlocuiește toate potrivirile unei expresii regulate cu alt text.preg_quote: Pune o bară inversă înaintea caracterelor speciale, ca un text să poată fi folosit în siguranță într-o expresie regulată.str_contains: Verifică dacă un text conține alt text. Returnează true sau false.