PHP preg_match(): expresii regulate (regex)

⚡ Rezumat inteligent

Expresiile regulate în PHP sunt instrumente de potrivire a șabloanelor care validează, împart și înlocuiesc textul dintr-o singură expresie. Această prezentare prezintă funcțiile de bază preg_match, preg_split și preg_replace, explică metacaracterele comune și construiește pas cu pas un șablon funcțional de validare a e-mailurilor.

  • 🧩 Ce este Regex-ul: O expresie regulată este un model care descrie text, permițând unei funcții să valideze, să caute sau să transforme șiruri de caractere.
  • ✅ meci_sarcină: preg_match testează dacă un model apare într-un șir de caractere și returnează valoarea „true” la prima potrivire, ideal pentru validare.
  • ✂️ preg_split: preg_split sparge un șir de caractere într-un array oriunde apare modelul, cum ar fi divizarea unei propoziții pe spații.
  • 🔁 înlocuire_preg: preg_replace găsește fiecare potrivire a unui model și o înlocuiește cu text nou, util pentru șablonare și evidențiere.
  • 🔤 Metacaractere: Simboluri precum ., ^, $, * și + construiesc modele complexe, de exemplu ancorând o potrivire la început sau la sfârșit.
  • 📧 Model de e-mail: Clasele de caractere și cuantificatorii se combină într-un singur model care verifică dacă o adresă de e-mail este formată corect.
  • 🤖 Asistență AI: Instrumentele de inteligență artificială pot scrie o expresie regulată dintr-o descriere simplă și pot explica sau depana un model complex existent.

Expresii regulate PHP

Ce este o expresie regulată în PHP?

Expresii regulate PHP, cunoscute și sub denumirea de expresii regulate, sunt un instrument puternic de potrivire a modelelor care poate fi utilizat într-o singură expresie. Expresiile regulate utilizează caractere speciale precum +, - și ^ pentru a crea expresii complexe. Acestea vă pot ajuta să îndepliniți sarcini precum validarea adreselor de e-mail, a adreselor IP și multe altele.

De ce să folosiți expresii regulate

  • Expresiile regulate PHP simplifică identificarea modelelor în datele de tip șir prin apelarea unei singure funcții. Acest lucru ne economisește timp de programare.
  • La validarea datelor introduse de utilizator, cum ar fi adresele de e-mail, numele de domeniu, numerele de telefon și adresele IP
  • Evidențierea cuvintelor cheie în rezultatele căutării
  • Când creați un șablon HTML personalizat. Regex în PHP poate fi folosit pentru a identifica etichetele șablonului și pentru a le înlocui cu date reale.

Funcții de expresie regulată încorporate în PHP

PHP are funcții încorporate care ne permit să lucrăm cu expresii regulate, pe care le vom învăța în acest tutorial. Să ne uităm la funcțiile expresiilor regulate utilizate în mod obișnuit în PHP.

  • preg_match() în PHP – această funcție este utilizată pentru a efectua potrivirea de șabloane pe un șir de caractere. Returnează „true” dacă se găsește o potrivire și „false” dacă nu se găsește nicio potrivire.
  • preg_split() în PHP – această funcție este utilizată pentru a efectua o potrivire de șablon pe un șir de caractere și apoi a împărți rezultatele într-un array numeric.
  • preg_replace() în PHP – această funcție este folosită pentru a efectua o potrivire de tipar pe un șir și apoi pentru a înlocui potrivirea cu textul specificat.

Mai jos este sintaxa pentru o funcție de expresie regulată, cum ar fi preg_match(), preg_split() sau preg_replace().

<?php
function_name('/pattern/',subject);
?>

AICI,

  • „function_name(…)” este fie preg_match(), fie preg_split(), fie preg_replace().
  • „/…/” barele oblice indică începutul și sfârșitul expresiei noastre regulate
  • „'/pattern/'” este modelul pe care trebuie să-l potrivim
  • „subiect” este șirul de text cu care trebuie să se potrivească

Să analizăm acum exemple practice care implementează funcțiile regex PHP de mai sus.

Preg_match() în PHP

Primul exemplu folosește funcția preg_match() pentru a efectua o potrivire simplă de model pentru cuvântul guru într-un anumit context. URL.

Codul de mai jos prezintă implementarea funcției preg_match() pentru exemplul de mai sus.

<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
echo "the url $my_url contains guru";
}
else
{
echo "the url $my_url does not contain guru";
}
?>

Navigați la URL http://localhost/phptuts/preg_match_simple.php

Funcții de expresie regulată încorporate

Să examinăm partea de cod responsabilă pentru rezultatul nostru, preg_match('/guru/', $my_url). AICI,

  • „preg_match(…)” este funcția PHP regex
  • „'/guru/'” este modelul de expresie regulată care trebuie potrivit
  • „$my_url” este variabila care conține textul cu care se potrivește.

PHP Preg_split()

Să analizăm acum un alt exemplu care utilizează funcția preg_split().

Vom lua o frază șir și o vom exploda într-o matrice; modelul care trebuie asortat este un singur spațiu.

Șirul de text care va fi folosit în acest exemplu este „Iubesc expresiile obișnuite”.

Codul de mai jos ilustrează implementarea exemplului de mai sus.

<?php

$my_text = "I Love Regular Expressions";

$my_array = preg_split("/ /", $my_text);

print_r($my_array );

?>

Navigați la URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Să ne uităm acum la preg_replace() Funcția PHP care efectuează o potrivire a modelului și apoi înlocuiește modelul cu altceva.

Codul de mai jos caută cuvântul guru în a şir.

Înlocuiește cuvântul „guru” cu cuvântul „guru” înconjurat de cod CSS care evidențiază culoarea de fundal.

<?php

$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";

$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);

echo $text;

?>

Presupunând că ați salvat fișierul preg_replace.php, navigați la URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metacaracterele expresiei regulate

Exemplele de mai sus au folosit modele foarte simple. Metacaracterele ne permit să efectuăm potriviri de modele mai complexe, cum ar fi testarea validității unei adrese de e-mail. Să analizăm acum metacaracterele utilizate în mod obișnuit.

Metacaracter Descriere Exemplu
. Se potrivește cu orice caracter, cu excepția unei linii noi /./ se potrivește cu orice are un singur caracter
^ Se potrivește cu începutul unui șir de caractere sau exclude caractere /^PH/ se potrivește cu orice șir care începe cu PH
$ Se potrivește cu un model de la sfârșitul șirului /com$/ se potrivește cu guru99.com, yahoo.com etc.
* Se potrivește cu zero sau mai multe dintre caracterele precedente /com*/ se potrivește cu computerul, comunicarea etc.
+ Necesită ca caracterul (caracterele) precedent(e) să apară cel puțin o dată /yah+oo/ se potrivește cu yahoo
\ Folosit pentru a evada metacaracterele /yahoo+\.com/ tratează punctul ca o valoare literală
[...] Clasa de caractere /[abc]/ se potrivește cu a, b sau c
az Se potrivește cu litere mici /az/ se potrivește cool, happy etc.
AZ Se potrivește cu litere mari /AZ/ se potrivește cu CE, CUM, DE CE etc.
0-9 Se potrivește cu orice număr între 0 și 9 /0-4/ meciuri 0,1,2,3,4

Lista de mai sus oferă doar metacaracterele cele mai frecvent utilizate în expresiile regulate.

Să analizăm acum un exemplu destul de complex care verifică validitatea unei adrese de e-mail.

<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
echo "$my_email is NOT a valid email address";
}
?>

Explicarea modelului de validare a e-mailurilor

AICI,

  • „/…/” începe și termină expresia regulată
  • „^[a-zA-Z0-9._-]” se potrivește cu orice litere mici sau mari, numere între 0 și 9, precum și puncte, sublinieri sau cratime.
  • „+@[a-zA-Z0-9-]” se potrivește cu simbolul @ urmat de litere mici sau mari, numere între 0 și 9 sau cratime.
  • „+\.[a-zA-Z.]{2,5}$/” folosește o bară oblică inversată pentru a evada din punct, apoi potrivește orice litere mici sau mari cu o lungime de caractere între 2 și 5 la sfârșitul șirului.

Navigați la URL http://localhost/phptuts/preg_match.php

Model de validare a e-mailurilor PHP

După cum puteți vedea din analiza de mai sus, metacaracterele sunt foarte puternice când vine vorba de potrivirea tiparelor.

Întrebări frecvente

preg_match se oprește la prima potrivire și completează $matches cu acel rezultat. preg_match_all găsește fiecare potrivire din șir și le returnează pe toate într-un array imbricat, ceea ce se potrivește ex.tracrepetarea elementelor.

Modificatorii urmează delimitatorul de închidere și modifică comportamentul de potrivire. Modificatorul i face ca modelul să nu fie sensibil la majuscule/minuscule, m tratează fiecare linie separat pentru ^ și $, iar s permite punctului să se potrivească cu caracterele noi de linie, ca în /guru/i.

Încadrați părți ale modelului în paranteze pentru a crea grupuri de captură. După preg_match, potrivirea completă se află în $matches[0], iar fiecare grup urmează în $matches[1], $matches[2] și așa mai departe.

Da. Descrieți textul pe care doriți să îl potriviți, cum ar fi un număr de telefon sau un format de dată, iar inteligența artificială poate produce modelul plus un exemplu preg_match. Testați-l cu intrări reale și de tip edge case înainte de a vă baza pe el.

Da. Lipește modelul, iar inteligența artificială îl poate descompune jeton cu jeton, poate explica cu ce se potrivește fiecare parte și poate sublinia de ce eșuează la anumite intrări, apoi poate sugera o versiune corectată.

Rezumați această postare cu: