Ce face preg_match_all
Spre deosebire de preg_match, care se oprește la prima potrivire, preg_match_all le găsește pe toate și returnează numărul lor.
Implicit (PREG_PATTERN_ORDER), $matches[0] conține toate potrivirile complete, $matches[1] toate valorile primului grup și așa mai departe. Cu PREG_SET_ORDER, fiecare element al tabloului este o potrivire completă, cu grupurile ei.
Parametri
| Parametru | Descriere |
|---|---|
$pattern |
Expresia regulată. |
$subject |
Textul în care se caută. |
$matches |
Opțional. Variabilă în care primești potrivirile. |
$flags |
Opțional. PREG_PATTERN_ORDER (implicit), PREG_SET_ORDER, PREG_OFFSET_CAPTURE. |
$offset |
Opțional. Poziția (în octeți) de la care începe căutarea. |
Ce returnează
Numărul de potriviri găsite sau false la eroare.
Exemple
Exemplul 1: Toate numerele de telefon dintr-un text
<?php
$text = "Sună la 0742 123 456 sau la 0232-210-500. Fax: 0232210501.";
$numar = preg_match_all('/0\d{3}[ -]?\d{3}[ -]?\d{3}/', $text, $m);
echo "Am găsit $numar numere:\n";
print_r($m[0]);
Rezultat
Am găsit 3 numere:
Array
(
[0] => 0742 123 456
[1] => 0232-210-500
[2] => 0232210501
)
Exemplul 2: Etichete și valori cu PREG_SET_ORDER
<?php
$text = "#php are 47 pagini, #mysql are 30, #javascript are 52";
preg_match_all('/#(\w+) are (\d+)/', $text, $m, PREG_SET_ORDER);
foreach ($m as $potrivire) {
echo $potrivire[1] . " => " . $potrivire[2] . "\n";
}
Rezultat
php => 47
mysql => 30
javascript => 52
Greșeli frecvente
- Parcurgi
$matchescuforeachși primești grupuri, nu potriviri. În modul implicit, potrivirile complete sunt în$matches[0].
Comenzi înrudite
preg_match: Verifică dacă un text se potrivește cu o expresie regulată și extrage prima potrivire.substr_count: Numără de câte ori apare un text în alt text.preg_split: Împarte un text în bucăți folosind o expresie regulată ca separator.