Ce este o expresie regulată?
O expresie regulată descrie ce cauți într-un text. Scrii un șablon format din caractere, iar căutarea folosește acel șablon pentru a găsi potriviri.
Șabloanele pot fi mici, de un singur caracter, sau mult mai elaborate.
Odată ce ai un șablon, îl poți folosi pentru orice fel de căutare sau înlocuire în text.
Sintaxă
În PHP, o expresie regulată se scrie ca un șir de caractere cu cel mult trei părți: delimitatori, șablonul propriu-zis și, dacă ai nevoie de ei, modificatori.
Sintaxa expresiilor regulate
Aici barele oblice sunt delimitatorii, PromptCookbook este șablonul, iar i este un modificator:
$exp = "/PromptCookbook/i";
Funcții pentru expresii regulate
Mai multe funcții PHP lucrează cu expresii regulate. Aceste trei funcții sunt cele pe care le vei folosi cel mai des:
preg_match()- Dă 1 dacă șirul de caractere conține șablonul, altfel 0preg_match_all()- Numără de câte ori apare șablonul în șirul de caractere; rezultatul poate fi 0preg_replace()- Întoarce un șir de caractere nou, în care părțile potrivite sunt înlocuite cu un alt șir de caractere
Folosirea preg_match()
Ca să afli dacă un șir de caractere conține o potrivire pentru un șablon, apelează preg_match().
Exemplu preg_match()
Caută „PromptCookbook” într-un șir de caractere, ignorând diferența dintre majuscule și minuscule. Rezultatul este 1, deoarece există o potrivire:
Ieșire: script PHP
<?php
$str = "Visit PromptCookbook";
$pattern = "/PromptCookbook/i";
echo preg_match($pattern, $str);
?>
Folosirea preg_match_all()
Când ai nevoie de numărul de potriviri ale unui șablon într-un șir de caractere, folosește preg_match_all().
Exemplu preg_match_all()
Numără de câte ori apare „ain” într-un șir de caractere, ignorând diferența dintre majuscule și minuscule:
Ieșire: script PHP
<?php
$str = "The rain in Spain falls mainly on the plain";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str);
?>
Folosirea preg_replace()
Cu preg_replace(), fiecare potrivire a șablonului dintr-un șir de caractere este înlocuită cu un alt șir de caractere.
Exemplu preg_replace()
Înlocuiește Microsoft cu PromptCookbook într-un șir de caractere, folosind un șablon care ignoră diferența dintre majuscule și minuscule:
Ieșire: script PHP
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "PromptCookbook", $str);
?>
Modificatori pentru expresii regulate
Adăugarea unui modificator schimbă felul în care se comportă o căutare.
i- Ignoră diferența dintre majuscule și minusculem- Activează modul pe mai multe linii, astfel încât șabloanele pentru începutul sau sfârșitul unui șir de caractere se potrivesc la începutul sau sfârșitul fiecărei liniiu- Face ca șabloanele codificate în UTF-8 să se potrivească corect
Șabloane pentru expresii regulate
Parantezele drepte îți permit să potrivești un caracter dintr-un set sau dintr-un interval:
[abc]- Un caracter, ales dintre cele enumerate în paranteze[^abc]- Un caracter care nu este enumerat în paranteze[a-z]- O literă mică[A-z]- O literă, mare sau mică; acest interval cuprinde și caracterele speciale aflate între Z și a[A-Z]- O literă mare[123]- O cifră, aleasă dintre cele enumerate în paranteze[0-5]- O cifră de la 0 până la 5[0-9]- O cifră de la 0 până la 9
Metacaractere
Unele caractere nu sunt luate în sens literal într-un șablon. Fiecare dintre aceste metacaractere are propriul rol:
|- Separă alternativele, iar oricare dintre ele se poate potrivi, ca în cat|dog|fish.- Exact un caracter de orice fel^- Leagă potrivirea de începutul șirului de caractere, ca în ^Hello$- Leagă potrivirea de sfârșitul șirului de caractere, ca în World$\d- O cifră\s- Un caracter de spațiere\b- O margine de cuvânt: \bWORD se potrivește la începutul unui cuvânt, iar WORD\b se potrivește la sfârșitul unuia\x{xxxx}- Caracterul Unicode al cărui număr hexazecimal este xxxx (necesită modificatorulu)
Cuantificatori
Un cuantificator spune de câte ori poate apărea ceva:
n+- Un șir de caractere cu unul sau mai multe nn*- Un șir de caractere în care n apare de oricâte ori, inclusiv niciodatăn?- Un șir de caractere în care n apare o dată sau delocn{x}- Un șir de caractere cu o succesiune de exact X caractere nn{x,y}- Un șir de caractere cu o succesiune de la X la Y caractere nn{x,}- Un șir de caractere cu o succesiune de X sau mai multe caractere n
Grupare
Pune o parte dintr-un șablon între paranteze () și un cuantificator se va aplica întregii părți. Parantezele îți permit și să alegi părți din șablon pe care să le folosești ca potrivire.
Exemplu de grupare
Găsește cuvântul „banana” căutând ba urmat de două copii ale lui na:
Ieșire: script PHP
<?php
$str = "I like bananas";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str);
?>