mb_ereg / mb_eregi în PHP

Verifică dacă un text se potrivește cu o expresie regulată multibyte și salvează grupurile găsite.

Sintaxă
mb_ereg(string $pattern, string $string, &$matches = null): bool

Ce face mb_ereg / mb_eregi

mb_ereg folosește motorul de expresii regulate Oniguruma, care lucrează direct pe caractere multibyte. Șablonul se scrie fără delimitatori (fără /.../), iar grupurile găsite sunt puse în $matches.

mb_eregi face același lucru fără să țină cont de majuscule, inclusiv la diacritice. În majoritatea proiectelor se folosește preg_match cu modificatorul u, care oferă același lucru și este mai cunoscut.

Parametri

Parametru Descriere
$pattern Expresia regulată, fără delimitatori.
$string Textul verificat.
$matches Opțional. Variabilă în care primești potrivirea și grupurile.

Ce returnează

true dacă există potrivire, altfel false.

Exemple

Exemplul 1: Extragerea unui număr de telefon

<?php
if (mb_ereg('(\d{4})-(\d{6})', "Telefon Iași: 0232-210500", $m)) {
    echo "Prefix: " . $m[1] . ", număr: " . $m[2];
}

Rezultat

Prefix: 0232, număr: 210500

Exemplul 2: Fără majuscule, cu diacritice

<?php
var_dump(mb_ereg('școală', "ȘCOALĂ GIMNAZIALĂ"));
var_dump(mb_eregi('școală', "ȘCOALĂ GIMNAZIALĂ"));

Rezultat

bool(false)
bool(true)

Greșeli frecvente

  • Copiezi un șablon de la preg_match cu delimitatori: mb_ereg('/\d+/', ...) caută literal caracterul /. Scoate delimitatorii.

Comenzi înrudite

  • preg_match: Verifică dacă un text se potrivește cu o expresie regulată și extrage prima potrivire.
  • mb_ereg_match: Verifică dacă ÎNCEPUTUL unui text se potrivește cu o expresie regulată multibyte.
  • mb_ereg_replace / mb_eregi_replace: Înlocuiește potrivirile unei expresii regulate multibyte cu alt text.